Eu estou com uma dúvida na configuração das anotações nas classes com hibernate.
Tendo o modelo que tem:
campus(codcampus,dsccampus)id:codcampus
bloco(codbloco,codcampus,dscbloco) id:codbloco,codcampus
pavimento(codpavimento,dscpavimento) id: codpavimento
andar(codpavimento,codbloco,qtdcorredor) //associativa id:codpavimento, codbloco
Depois que eu configuro com as anotações do hibernate, se eu buscar campus e bloco ele relaciona certo.Quando eu pesquiso por pavimento, eu dou uma busca pela classe andar, pois possui todos os pavimentos.Mas na hora de executar, dá o seguinte erro:
javax.servlet.ServletException: ORA-01000: maximum open cursors exceeded
Segue abaixo as classes:
public class Bloco {
@ManyToOne (fetch=FetchType.LAZY) //o seu conteúdo é trazido quando acessado pela primeira vez.
@JoinColumn(name="codcampus")
private Campus campus;
@Id
private String codBloco;
@OneToMany(mappedBy="bloco", targetEntity= Andar.class,cascade= CascadeType.ALL,fetch= FetchType.EAGER)
private List<Andar> andares;
public Campus getCampus() {
return campus;
}
public void setCampus(Campus campus) {
this.campus = campus;
}
public String getCodBloco() {
return codBloco;
}
public void setCodBloco(String codBloco) {
this.codBloco = codBloco;
}
public List<Andar> getAndares() {
return andares;
}
public void setAndares(List<Andar> andares) {
this.andares = andares;
}
}
public class Pavimento {
@Id
private int codPavimento;
private String dscPavimento;
@OneToMany(mappedBy="pavimento", targetEntity=Andar.class)
private List<Andar> andares;
public int getCodPavimento() {
return codPavimento;
}
public void setCodPavimento(int codPavimento) {
this.codPavimento = codPavimento;
}
public String getDscPavimento() {
return dscPavimento;
}
public void setDscPavimento(String dscPavimento) {
this.dscPavimento = dscPavimento;
}
public List<Andar> getAndares() {
return andares;
}
public void setAndares(List<Andar> andares) {
this.andares = andares;
}
}
@IdClass(Andar.class)
@Entity
public class Andar implements Serializable{
@Id
@ManyToOne
@JoinColumn(name="codbloco")
private Bloco bloco;
@Id
@ManyToOne
@JoinColumn(name="codpavimento")
private Pavimento pavimento;
@Column(name="banheiro")
private int banheiro;
@Column(name="bebedouro")
private int bebedouro;
public int getBanheiro() {
return banheiro;
}
public void setBanheiro(int banheiro) {
this.banheiro = banheiro;
}
public int getBebedouro() {
return bebedouro;
}
public void setBebedouro(int bebedouro) {
this.bebedouro = bebedouro;
}
public Bloco getBloco() {
return bloco;
}
public void setBloco(Bloco bloco) {
this.bloco = bloco;
}
public Pavimento getPavimento() {
return pavimento;
}
public void setPavimento(Pavimento pavimento) {
this.pavimento = pavimento;
}
}
A busca no dao fiz assim:
public List procuraPavimentoporBloco (Bloco bloco){System.out.println("AndarDao");
return this.session.createQuery("from Andar where codbloco = :codbloco")
.setParameter("codbloco", bloco.getCodBloco())
.list();
}
Desde já agradeço