Pessoal,
Estou com um problema meio chato de resolver… Tenho o seguinte código para salvar meu objeto:
@Override
public int salvar(Resposta resposta) {
this.session.saveOrUpdate(resposta);
// this.session.getTransaction().commit(); // Necessário chamar commit, pois chamando-se simplesmente flush não estava gravando no banco de dados.
this.session.flush();
return resposta.getId();
}
Simplesmente chamando-se flush não grava o registro no banco. Com o log do hibernate habilitado é imprimesso o insert corretamente. Aí quando subtituo o flush pelo commit grava no banco, mas ao tentar gravar um segundo registro dá o seguinte erro:
GRAVE: Servlet.service() for servlet [cadastroResposta] in context with path [/aie] threw exception
org.hibernate.SessionException: Session is closed!
at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:72)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
at $Proxy34.flush(Unknown Source)
at br.gov.ibama.aie.resposta.RespostaDAOHibernate.salvar(RespostaDAOHibernate.java:21)
at br.gov.ibama.aie.resposta.RespostaRN.salvar(RespostaRN.java:14)
at br.gov.ibama.aie.servlet.CadastroRespostaServlet.service(CadastroRespostaServlet.java:110)
Alguém já passou por isto?