Olá!
Eu estou começando com hibernate a alguns meses e estou com um problema:
Estou criando uma pagina de cadastro que tem 3 combos dinamicas: campus,bloco e pavimento
Eu clico no primeiro combo e ele lista o segundo certinho.Depois eu clico no segundo, ele dispara o erro.
Alguem pode me ajudar???
erro:
[list]
root cause
java.sql.SQLException: ORA-01000: maximum open cursors exceeded
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
oracle.jdbc.ttc7.Oopen.receive(Oopen.java:118)
oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:426)
oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:288)
oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:307)
oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:191)
oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:174)
oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:339)
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
org.hibernate.loader.Loader.doQuery(Loader.java:673)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
org.hibernate.type.EntityType.resolve(EntityType.java:379)
org.hibernate.type.ComponentType.resolve(ComponentType.java:584)
org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
org.hibernate.loader.Loader.doQuery(Loader.java:701)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
org.hibernate.type.EntityType.resolve(EntityType.java:379)
org.hibernate.type.ComponentType.resolve(ComponentType.java:584)
org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
org.hibernate.loader.Loader.doQuery(Loader.java:701)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
org.hibernate.type.EntityType.resolve(EntityType.java:379)
org.hibernate.type.ComponentType.resolve(ComponentType.java:584)
org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
org.hibernate.loader.Loader.doQuery(Loader.java:701)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
org.hibernate.type.EntityType.resolve(EntityType.java:379)
org.hibernate.type.ComponentType.resolve(ComponentType.java:584)
org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
org.hibernate.loader.Loader.doQuery(Loader.java:701)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
[/list]
meu jsp:
<html>
<head>
<title></title>
</head>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
<body>
<H1 align="center">Cadastro de Salas</H1>
<f:view>
<h:form>
<h:outputText value="Campus:" />
<h:selectOneMenu id="campus" style="width: 172px" value="#(bCampus.campus.codcampus)" valueChangeListener="#{bCampus.listbloco}" onchange="submit()" immediate="true">
<f:selectItems value="#{bCampus.listarCampus}"/>
</h:selectOneMenu><br>
<h:outputText value="Bloco:"/>
<h:selectOneMenu id="bloco" style="width: 172px" value="#(bBloco.bloco.codbloco)" valueChangeListener="#{bBloco.listpavimento}" onchange="submit()" immediate="true">
<f:selectItems value="#{bCampus.listarBlocos}"/>
</h:selectOneMenu><br>
<h:outputText value="Pavimento:"/>
<h:selectOneMenu id="pavimento" style="width: 172px" value="#(bPavimento.andar.pavimento.dscpavimento)">
<f:selectItems value="#{bBloco.listarPavimentos}"/>
</h:selectOneMenu>
<br>
</h:form>
</f:view>
</body>
</html>
meu hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="hibernate.connection.url">
jdbc:oracle:thin:@172.17.1.13:1521:ORCL
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.OracleDialect
</property>
<property name="hibernate.connection.username">
SCIF
</property>
<property name="hibernate.connection.password">
</property>
<property name="hibernate.show_sql">
true
</property>
<property name="hibernate.format_sql">
true
</property>
<mapping class="br.unig.scif.modelo.Campus"/>
<mapping class="br.unig.scif.modelo.Bloco"/>
<mapping class="br.unig.scif.modelo.Pavimento"/>
<mapping class="br.unig.scif.modelo.Andar"/>
</session-factory>
</hibernate-configuration>
meu bean campus
public class CampusBean {
private Campus campus = new Campus();
private String codcampus = null;
List listarCampus;
List listarBlocos;
public CampusBean() {
super();
// TODO Auto-generated constructor stub
}
public Campus getCampus() {
return campus;
}
public void setCampus(Campus campus) {
this.campus = campus;
}
public List<Campus> getListarCampus() {
listarCampus = new ArrayList();
listarCampus.add(new SelectItem(0,
"Selecione um campus",null));
Session session = new HibernateUtil().getSession();
DaoFactory factory = new DaoFactory();
factory.beginTransaction();
List<Campus> busca = new Dao(session,Campus.class).listaTudo();
factory.hasTransaction();
factory.closeSession();
for(Campus campus:busca){
listarCampus.add(new SelectItem(campus.getCodCampus(),
campus.getNomeCampus(),null));
}
return listarCampus;
}
public List getListarBlocos() {
listarBlocos = new ArrayList();
listarBlocos.add(new SelectItem(0,
"Selecione um bloco",null));
Campus c = new Campus();
c.setCodCampus(this.codcampus);
Session session = new HibernateUtil().getSession();
DaoFactory factory = new DaoFactory();
factory.beginTransaction();
List<Bloco> busca = new BlocoDao(session).procuraBlocoporCampus(c); factory.hasTransaction();
factory.closeSession();
listarBlocos.clear();
for(Bloco bloco:busca){
listarBlocos.add(new SelectItem(bloco.getCodBloco(),
bloco.getCodBloco(),null));
}
return listarBlocos;
}
public void setListarBlocosporCampus(List listarBlocosporCampus) {
this.listarBlocos = listarBlocosporCampus;
}
public String getCodcampus() {
return codcampus;
}
public void setCodcampus(String codcampus) {
this.codcampus = codcampus;
}
public void listbloco (ValueChangeEvent event){
FacesContext facesContext = FacesContext.getCurrentInstance();
this.codcampus = event.getNewValue().toString();
}
}
bean bloco:
public class BlocoBean{
private Bloco bloco;
private String codbloco;
List listarPavimentos;
public String getCodbloco() {
return codbloco;
}
public void setCodbloco(String codbloco) {
this.codbloco = codbloco;
}
public BlocoBean() {
super();
// TODO Auto-generated constructor stub
}
public Bloco getBloco() {
return bloco;
}
public void setBloco(Bloco bloco) {
this.bloco = bloco;
}
public List getListarPavimentos() {
listarPavimentos = new ArrayList();
listarPavimentos.add(new SelectItem(0,
"Selecione um pavimento",null));
Bloco b = new Bloco();
b.setCodBloco(this.codbloco);
Session session = new HibernateUtil().getSession();
DaoFactory factory = new DaoFactory();
factory.beginTransaction();
List<Pavimento> busca = new AndarDao(session).procuraPavimentoporBloco(b);System.out.println("listarPavimentos");
factory.hasTransaction();
factory.closeSession();
session.flush();
listarPavimentos.clear();
for(Pavimento pavimento:busca){
listarPavimentos.add(new SelectItem(pavimento.getCodPavimento(),
pavimento.getDscPavimento(),null));
}
return listarPavimentos;
}
public void listpavimento (ValueChangeEvent event){
FacesContext facesContext = FacesContext.getCurrentInstance();
this.codbloco = event.getNewValue().toString();
}
}