Pessoas,
Estou começando um projeto Web Hibernate 4, JSF e Spring 3.
De início, fiz minhas entidades, e criei uma classe de teste onde eu injetava minhas daos e fiz vários testes, até aí tudo funcionando.
Porém quando fiz meu xhtml e meu managed bean, comecei a ter este erro ao realizar uma consulta. Aliás, qualquer método que utilize os meus daos.
java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;: javax.faces.el.EvaluationException: java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) [:2.0.3-]
Lí algumas pessoas falando que este erro ocorre pela ausência de alguns métodos do Hibernate 3.6 para o 4 com relação ao SessionFactory.
Porém achei estranho funcionar qdo testo fora da aplicação web, e qdo testo pela aplicação eu tenho este erro.
Alguém sabe doq se trata?
posta o seu application-context.xml
Meu application-context:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/4bkp"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<bean id="UsuarioBean" class="br.com.fourbkp.managedBeans.UsuarioBean">
<property name="usuarioDAO" ref="UsuarioDAO"/>
</bean>
<bean id="PerfilBean" class="br.com.fourbkp.managedBeans.PerfilBean">
<property name="perfilDAO" ref="PerfilDAO"/>
</bean>
<bean id="PerfilDAO" class="br.com.fourbkp.dao.PerfilDAOImpl">
<property name="sessionFactory" ref="hibernateSessionFactory"/>
</bean>
<bean id="UsuarioDAO" class="br.com.fourbkp.dao.UsuarioDAOImpl">
<property name="sessionFactory" ref="hibernateSessionFactory"/>
</bean>
<bean id="hibernateSessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> -->
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>br.com.fourbkp.beans.Usuario</value>
<value>br.com.fourbkp.beans.Perfil</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.connection.pool_size">
1
</prop>
<prop key="hibernate.show_sql">
true
</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="hibernateSessionFactory" />
</bean>
<tx:annotation-driven />
</beans>
É, não.
Eu costumo usar os métodos da classe Session, do package org.hibernate e não do org.hibernate.classic.
Talvez seja isto.
humm, assim que chegar em casa vou verificar minha classe session.
Valews
Estou usando o session de org.hibernate mesmo na minha GenericDAO, não é por causa disto naum.
import org.hibernate.Session;
import org.hibernate.SessionFactory;
Alguém mais tem opiniões do que pode estar ocorrendo?
Consegui contornar este erro, eu alterei minhas libs do Hibernate 4 para o 3, apanhei um pouco com os conflitos de libs do Maven com o Hibernate, mas ao final, consegui fazer funcionar minhas DAOs.
Mesmo assim ainda gostaria de fazer funcionar com o Hibernate 4. Qualquer coisa se conseguir, eu posto aqui.
Valews!