Como configuro corretamente annotations no hibernate

0 respostas
pimentaft

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

Criado 2 de outubro de 2008
Respostas 0
Participantes 1