Tenho uma aplicação desenvolvida em JSF 2 utilizando Hibernate 3.5. Ocorre que uma parte da aplicação precisou ser feita sem JSF, utilizando apenas JSP e Servlet. Porém ao chamar os métodos de persistência da minhas classes DAO de dentro do Servlet, está ocorrendo o seguinte erro:
org.hibernate.HibernateException: createCriteria is not valid without active transaction
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:340)
at $Proxy34.createCriteria(Unknown Source)
Porém este erro ocorre apenas dentro do Servlet. Sabem porque?
* Obs.: estou utilizando o “Open Session in View”, que já intercepta as requisições e realiza as operações de banco dentro de uma transaction
Seu open session in view é utilizado em um filtro certo?
Se for, verifique se ao chamar o servlet se o filtro está sendo chamado. Parece que não, pois a mensagem diz que não há transação ativa: createCriteria is not valid without active transaction
[quote=jakefrog]Seu open session in view é utilizado em um filtro certo?
Se for, verifique se ao chamar o servlet se o filtro está sendo chamado. Parece que não, pois a mensagem diz que não há transação ativa: createCriteria is not valid without active transaction [/quote]
Olá jakefrog!
Realmente não está passando pelo filtro… Tem idéia de como eu faço para estas requisições do servlet passarem pelo filtro?
[quote=jakefrog]Do mesmo modo como foi feito para o JSF.
Como foi feito? Como você está chamando o JSF? e o JSP?[/quote]
Pois é… o estranho é que chamo exatamente da mesma forma, ou seja, tenho as classes de Regra de Negócio, que por sua vez chamam as classes DAO…