Eu tenho uma relação 1 -> n entre Conexao e Relatorio.
As classes são as seguintes:
@Entity
@Table(name = "conexao")
public class Conexao {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CONEXAO_ID", unique = true, nullable = false)
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy="conexao")
private Set<Relatorio> relatorios;
//getters and setters
}
A classe Relatorio:
@Entity
@Table(name = “relatorio”)
public class Relatorio {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "RELATORIO_ID", unique = true, nullable = false)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CONEXAO_ID")
private Conexao conexao;
public Relatorio(Conexao conexao){
this.coxexao = conexao;
}
//getters and setters
}
Estou executando assim:
public class Teste{
public static void main(String[] args){
new Teste();
}
public Teste(){
ConexaoDao conDao = new ConexaoDao();
Conexao con = conDao.buscar(new Long(6)); // aqui, tudo certo, ele tras a conexao corretamente
Relatorio relatorio = new Relatorio(con, "teste777", "teste555", "teste333");
con.getRelatorios().add(relatorio);
RelatorioDAO relDao = new RelatorioDAO();
relDao.salvar(relatorio); // ele salva o relatorio, com a conexao preenchida corretamente
}
}
Porém, quando vou carregar o relatorio, ele tras a conexão com os campos nulos. Sendo que quando eu debuguei o codigo, verifiquei que a conexao passada como parametro para o construtor de Relatorio, está com todos os campos preenchidos.
O mais estranho ainda é que quando eu olho no Postgres, a tabela relatorio, tem a coluna CONEXAO_ID preenchida corretamente.
Não entendi pq o Java não está trazendo a conexão com todos os nulos. A conexão trazida não é nula, mas seus campos sim. Alguém poderia me ajudar???