Spring 4 和 Hibernate 5 给出 NoSuchMethodError org.hibernate.internal.CoreMessageLogger

Spring 4 and Hibernate 5 gives NoSuchMethodError org.hibernate.internal.CoreMessageLogger

所以,我有一个成功的 Spring 4.2.2.RELEASE MVC 网络应用程序与 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

我试图在网络上找到显示 Hibernate 5 与 Spring 4.2.2 的正确配置的其他地方,但我找不到任何东西。我知道我经历了从 Hibernate 3 到 Hibernate 4 的一些痛苦,现在我想相应地向上迁移。我知道会有一些痛点。 有什么方法可以解决这个问题,以及我应该注意的任何其他未来问题吗?

谢谢!

更新了我的 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>

这解决了我的问题!

我认为这是一个类路径问题。

您检查过应用服务器的库了吗?

方法org.hibernate.internal.CoreMessageLogger.debug继承自org.jboss.logging.BasicLogger,自hibernate 4起添加。 你有 jboss-logging 在你的类路径中正确的版本吗?

也许你的类路径中有 hibernate 3 库?