Senhores.
Tenho uma classe chamada Usuario.
@Entity
@Table(name = "tb_usuario")
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "email", nullable = false, unique = true)
private String email;
@Column(name = "senha", nullable = false, length = 32)
private String senha;
@Column(name = "hash_md5", nullable = false, length = 32)
private String hashMD5Email;
@Column(name = "status", nullable = false)
private int ativo = 0;
@OneToMany(mappedBy = "usuario",cascade = CascadeType.ALL)
//@JoinColumn(name = "id_usuario")
private List consultas ;
@Column(name = "data_cadastro", nullable = false)
@Temporal(TemporalType.DATE)
private Calendar dataCadastro;
public Usuario() {
}
public void setDataCadastro(Calendar dataCadastro) {
this.dataCadastro = dataCadastro;
}
public Calendar getDataCadastro() {
return dataCadastro;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public void setAtivo(int ativo) {
this.ativo = ativo;
}
public int getAtivo() {
return ativo;
}
public List getConsultas() {
return consultas;
}
public void setConsultas(List consultas) {
this.consultas = consultas;
}
Tenho também uma classe chamada ‘ConsultaTratadaHtml’, segue o código da mesma.
@Entity
@Table(name = "tb_consulta")
public class ConsultaTratadaHtml {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "consulta_html", nullable = false, length = 500)
private String consultaHtml;
@Column(name = "data_consulta", nullable = false)
@Temporal(TemporalType.DATE)
private Calendar dataConsulta;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="id_usuario",nullable = false)
private Usuario usuario;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getConsultaHtml() {
return consultaHtml;
}
public void setConsultaHtml(String consultaHtml) {
this.consultaHtml = consultaHtml;
}
public Calendar getDataConsulta() {
return dataConsulta;
}
public void setDataConsulta(Calendar dataConsulta) {
this.dataConsulta = dataConsulta;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}
Como é possivel perceber a classe Usuario tem um relacionamento oneToMany com a classe ConsultaTratadaHtml. E a classe ConsultaTratadaHtml tem um relacionamento ManyToOne com a classe Usuário. Ou seja temos um relacionamento bidirecional, sendo que a chave fica na classe ConsultaTratadaHtml. Estou tentando salvar uma nova ConsultaTratadaHtml usando o seguitne código :
Usuario usuario = new UsuarioDAO().buscarUsuarioByEmail("pedro@gmail");
ConsultaTratadaHtml consulta = new ConsultaTratadaHtml();
consulta.setConsultaHtml("teste de persistencia");
consulta.setDataConsulta(Calendar.getInstance());
consulta.setUsuario(usuario);
usuario.getConsultas().add(consulta);
new ConsultaTratadaHtmlDAO().salvarConsulta(consulta);
Mas gera um erro na seguinte linha :
usuario.getConsultas().add(consulta);
A seguinte mensagem de erro
xception in thread “main” org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.pedrodev.webservicecpf.domain.Usuario.consultas, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:582)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:201)
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:561)
at org.hibernate.collection.internal.AbstractPersistentCollection.write(AbstractPersistentCollection.java:392)
at org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:297)
at testes.Programa.main(Programa.java:39)
Alguém tem idéia do que pode ser?