所以,我有一个成功的Spring 4.2.2.RELEASE MVC web-app使用Hibernate 4.3.8.Final。我改为Hibernate 5.0.2.Final,并对Spring应用程序上下文文件进行了以下更改。
自:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
要:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
来自:
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
要:
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
我无法在网络上的任何其他地方找到此问题。我确信我已经检查了我的类路径,并且在任何级别的应用程序中都没有其他任何Hibernate4引用。
当我尝试执行我的DaoTestCode时,由于此错误消息,Spring应用程序上下文将不会加载:
java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debug
我试图在网上找到其他地方,它显示了使用Spring 4.2.2的Hibernate 5的正确配置,我找不到任何东西。我知道我经历了从Hibernate 3到Hibernate 4的一些痛苦,现在我想要相应地迁移。我知道会有一些痛点。 有没有办法解决这个问题,以及我应该注意的任何其他未来问题?
谢谢!
答案 0 :(得分:3)
更新了我的pom文件,将我的所有日志记录罐更新到最新版本:
<!-- Logging Dependencies -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.12</version>
</dependency>
这解决了我的问题!
答案 1 :(得分:0)
我认为这是一个类路径问题。
您是否已检入应用程序服务器的库?
方法org.hibernate.internal.CoreMessageLogger.debug继承自org.jboss.logging.BasicLogger,并在hibernate 4之后添加。 你在类路径中使用正确的版本进行jboss-logging吗?
也许你在类路径中有hibernate 3 lib?