Hello galera.
Estive dando uma olhada no SQL gerado pela consulta e gostaria de saber o porque desse retorno.
Eu tenho duas tabelas Centros e Universidade e seus relacionamentos estao abaixo;
Classe Centros
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_universidade",nullable=false)
private Universidade universidade;
Classe Universidade
@OneToMany(mappedBy="universidade", fetch = FetchType.EAGER)
@Cascade(CascadeType.SAVE_UPDATE)
private Collection<Centros> centros;
Quando eu executo esse codigo
Centros c = (Centros) session.get(Centros.class, 21) o SQL gerado e:
Hibernate:
select
centros0_.id_centro as id1_1_1_,
centros0_.nome as nome1_1_,
centros0_.data as data1_1_,
centros0_.id_universidade as id4_1_1_,
universida1_.id_universidade as id1_0_0_,
universida1_.nome as nome0_0_
from
SYSTEM.Centros centros0_,
SYSTEM.Universidade universida1_
where
centros0_.id_universidade=universida1_.id_universidade
and centros0_.id_centro=?
Hibernate:
select
centros0_.id_universidade as id4_1_,
centros0_.id_centro as id1_1_,
centros0_.id_centro as id1_1_0_,
centros0_.nome as nome1_0_,
centros0_.data as data1_0_,
centros0_.id_universidade as id4_1_0_
from
SYSTEM.Centros centros0_
where
centros0_.id_universidade=?
Agora a questao é a seguinte. Porque que ele efetua essa consulta marcada de vermelho? Eu notei que foi porque a classe Universidade esta marcada com EAGER, mas eu ja tenho esse dado no primeiro select porque a classe Centros é EAGER tbem.
Obrigado