Senhores,
Estou estudando JPA e tenho as seguintes Entidades:
@Entity
@Table(name="estado")
public class Estado {
@Id
@GeneratedValue
@Column(name="est_id")
private int id;
@Column(name="est_uf")
private String est;
@Column(name="est_nome")
private String nome;
@OneToMany(mappedBy="estado",fetch=FetchType.LAZY)
private List<Cidade> listCidades;
public List<Cidade> getListCidades() {
return listCidades;
}
public void setListCidades(List<Cidade> listCidades) {
this.listCidades = listCidades;
}
public String getEst() {
return est;
}
public void setEst(String est) {
this.est = est;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
@Entity
@Table(name="cidade")
public class Cidade {
@Id
@GeneratedValue
@Column(name="cid_id")
private int id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="est_fk")
private Estado estado;
@Column(name="cid_nome")
private String nome;
public Estado getEst() {
return estado;
}
public void setEst(Estado est) {
this.estado = est;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Tenho a classe abaixo para fazer uma busca:
public class Conectar {
public static void main(String[] args) {
Session s=null;
try{
s = HibernateUtil.getSession().openSession();
System.out.println("ok"+s.toString());
Estado estado = (Estado) s.get(Estado.class, 1);
System.out.println("1 NIVEL ESTADO "+estado.getNome());
for(Cidade c:estado.getListCidades()){
System.out.println("1 CIDADE "+c.getNome());
Estado estado1=c.getEst();
System.out.println(" 2 NIVEL ESTADO "+estado1.getNome());
for(Cidade c1:estado1.getListCidades()){
System.out.println("2 CIDADE "+c1.getNome());
Estado e3 = c1.getEst();
System.out.println("3 NIVEL ESTADO "+e3.getNome());
for(Cidade c2:e3.getListCidades()){
System.out.println("3 CIDADE "+c2.getNome());
}
}
}
}finally{
System.out.println("fechei"+s.close());
}
}
}
Pelo que estavo lendo o tipo Lazy não deveria buscar as cidades, mas além de buscar as cidades ele busca tudo!!!
Além do mais a busca entra em loop e como tenho uma Estado com várias cidades e essas cidades tem estados, sempre consigo buscar mais cidades!!! Como para com isso?