0

所以,我有一个成功的 Spring 4.2.2.RELEASE MVC web 应用程序与 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 经历了一些痛苦,现在我想相应地向上迁移。我知道会有一些痛点。有没有办法解决这个问题,以及我应该注意的任何其他未来问题?

谢谢!

4

2 回答 2

3

更新了我的 pom 文件以将我所有的日志记录 jar 更新到最新版本:

    <!-- 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>

这解决了我的问题!

于 2015-10-29T16:31:54.430 回答
0

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

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

org.hibernate.internal.CoreMessageLogger.debug 方法是从 org.jboss.logging.BasicLogger 继承的,并且是从 hibernate 4 开始添加的。你的类路径中有正确版本的 jboss-logging 吗?

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

于 2015-10-29T16:40:29.973 回答