简体   繁体   English

java.lang.NoSuchMethodError:org.hibernate.SessionFactory.openSession()Lorg / hibernate / Session;

[英]java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session;

I'm starting to develop an application, trying to integrate Hibernate and Spring. 我开始开发应用程序,尝试将Hibernate和Spring集成在一起。 I looked at the other threads regarding this problem, but none of the proposed solutions helped me. 我查看了有关此问题的其他主题,但是所提出的解决方案都没有帮助我。

Here's my pom.xml 这是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>my.organization.cs</groupId>
<artifactId>call_center_basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>call_center_basic</name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java-version>1.7</java-version>
    <org.springframework-version>4.0.0.RELEASE</org.springframework-version>
    <org.aspectj-version>1.7.1</org.aspectj-version>
    <slf4j.version>1.6.4</slf4j.version>
</properties>

<dependencies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${org.springframework-version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${org.aspectj-version}</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.0.0.GA</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.0.Final</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-tools</artifactId>
        <version>3.2.0.beta8</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>my.organization.cs</groupId>
        <artifactId>call_center_config</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-tools</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <configuration>
                        <tasks>
                            <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"
                                classpathref="maven.plugin.classpath" />

                            <hibernatetool destdir="target/generated-sources">
                                <jdbcconfiguration
                                    propertyfile="../call_center_config/src/main/resources/ro/ubbcluj/cs/call_center_config/persistence/hibernate.properties"
                                    packagename="my.organization.cs.call_center_basic.model"
                                    revengfile="../call_center_config/src/main/resources/ro/ubbcluj/cs/call_center_config/persistence/reveng/model.reveng.xml"
                                    reversestrategy="my.organization.cs.call_center_config.reveng.util.BaseReverseEngineeringStrategy" />
                                <hbm2java jdk5="true" ejb3="true" />
                                <hbmtemplate templatepath="../call_center_config/hibernate/templates/pojo"
                                    template="Pojo.ftl" filepattern="{package-name}/{class-name}.java">
                                    <property key="jdk5" value="true" />
                                    <property key="ejb3" value="true" />
                                </hbmtemplate>
                                <property key="hibernatetool.commentformatter.toolclass"
                                    value="my.organization.cs.call_center_config.reveng.util.CommentFormatter" />
                            </hibernatetool>
                            <!-- Disable CascadeType.ALL -->
                            <replace dir="target/generated-sources">
                                <include name="**/Category.java" />
                                <replacefilter token="cascade=CascadeType.ALL, "
                                    value="" />
                            </replace>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>cglib</groupId>
                    <artifactId>cglib</artifactId>
                    <version>2.2</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.6</version>
                </dependency>
                <dependency>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                    <version>1.1.1</version>
                </dependency>
                <dependency>
                    <groupId>my.organization.cs</groupId>
                    <artifactId>call_center_config</artifactId>
                    <version>0.0.1-SNAPSHOT</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-tools</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-core</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-tools</artifactId>
                    <version>3.2.4.GA</version>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>3.3.2.GA</version>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jul-to-slf4j</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
            </dependencies>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>${java-version}</source>
                <target>${java-version}</target>
                <!-- <skip>true</skip> -->
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.2</version>
            <configuration>
                <skipTests>false</skipTests>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>target/generated-sources</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <warName>call_center_basic</warName>
                <webXml>src/main/resources/WEB-INF/web.xml</webXml>
            </configuration>
        </plugin>
    </plugins>
</build>

Here's my spring-persistence-config.xml 这是我的spring-persistence-config.xml

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
                    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
                    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
                    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">


<context:annotation-config />

<tx:annotation-driven transaction-manager="transactionManager" />

<context:property-placeholder
    ignore-unresolvable="true"
    location="classpath:my/organization/cs/call_center_config/persistence/hibernate.properties"/>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="transactionTemplate"
    class="org.springframework.transaction.support.TransactionTemplate">
    <property name="transactionManager" ref="transactionManager" />
</bean>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${hibernate.connection.driver_class}" />
    <property name="url" value="${hibernate.connection.url}" />
    <property name="username" value="${hibernate.connection.username}" />
    <property name="password" value="${hibernate.connection.password}" />
    <property name="accessToUnderlyingConnectionAllowed" value="true" />
    <property name="validationQuery" value="select 1" />
    <property name="minIdle" value="0" />
    <property name="maxIdle" value="10" />
    <property name="maxActive" value="10" />
    <property name="maxWait" value="20000" />
    <property name="minEvictableIdleTimeMillis" value="120000" />
    <property name="timeBetweenEvictionRunsMillis" value="10000" />
    <property name="numTestsPerEvictionRun" value="3" />
    <property name="removeAbandonedTimeout" value="60" />
    <property name="removeAbandoned" value="true" />
    <property name="logAbandoned" value="true" />
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
        <value>
            hibernate.format_sql=true
            hibernate.show_sql=false
            hibernate.use_sql_comments=true
            hibernate.dialect=${hibernate.dialect}
            hibernate.jdbc.batch_size=1000
            hibernate.order_inserts=true
            hibernate.order_updates=true
            hibernate.cache.use_second_level_cache=false
            hibernate.default_schema=${hibernate.default_schema}
            hibernate.default_catalog=${hibernate.default_catalog}
            hibernate.current_session_context_class=thread
        </value>
    </property>
</bean>

Now, the exception happens, when I was trying to test if everything is set up correctly and I can get an entity from the DB. 现在,发生异常,当我尝试测试所有设置是否正确并且可以从数据库中获取实体时。

Here's the JUnit test that I execute: 这是我执行的JUnit测试:

package my.organization.cs.call_center_basic.dao;

import static org.junit.Assert.assertNotNull;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

import my.organization.cs.call_center_basic.model.Institute;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:my/organization/cs/call_center_basic/persistence/system-test-config.xml",
                "classpath:my/organization/cs/call_center_basic/persistence/spring-persistence-config.xml" })
@Transactional
public class TestInstituteDao {

    @Autowired
    InstituteDao instituteDao;

    @Test
    public void testGetById(){
        Institute institute = instituteDao.getById(1L);
        assertNotNull(institute);
        System.out.println(institute.toString()); 
    }
}

Also, here's my whole stack trace: 另外,这是我的整个堆栈跟踪:

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session;
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:517)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
    at org.springframework.test.context.transaction.TransactionalTestExecutionListener$TransactionContext.startTransaction(TransactionalTestExecutionListener.java:587)
    at org.springframework.test.context.transaction.TransactionalTestExecutionListener.startNewTransaction(TransactionalTestExecutionListener.java:273)
    at org.springframework.test.context.transaction.TransactionalTestExecutionListener.beforeTestMethod(TransactionalTestExecutionListener.java:168)
    at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:363)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session;
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:417)
    ... 25 more

Does anyone know what's wrong here? 有人知道这是怎么回事吗? Please help me out, I've been stuck here for hours. 请帮帮我,我已经在这里呆了几个小时。

Thanks! 谢谢!

Use maven to find out which dependency brings you the wrong version of hibernate: 使用maven找出哪个依赖项为您带来了错误的休眠版本:

mvn dependency:tree -Dincludes=org.hibernate:hibernate-core:*:* -Dverbose=true -DoutputFile=<specify a file name>

http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Java.lang.NoSuchMethodError:org.hibernate.SessionFactory.openSession()更新到hibernate 4后的Lorg / hibernate / classic / Session - Java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session after update to hibernate 4 java.lang.NoSuchMethodError:org.hibernate.SessionFactory.openSession()Lorg / hibernate / classic / Session; - java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; 使用HibernateTemplate的问题:java.lang.NoSuchMethodError:org.hibernate.SessionFactory.openSession()Lorg / hibernate / classic / Session; - Problems using HibernateTemplate: java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session - java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session NoSuchMethodError:org.hibernate.SessionFactory.openSession()Lorg / hibernate / classic / Session; - NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; org.hibernate.SessionFactory.openSession()Lorg /休眠/经典/会话; - org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; NoSuchMethodError:org.hibernate.SessionFactory.openSession() - NoSuchMethodError: org.hibernate.SessionFactory.openSession() java.lang.NoSuchMethodError:org.hibernate.SessionFactory.getCurrentSession()Lorg / hibernate / classic / Session; - java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session; Hibernate ASM Spring java.lang.NoSuchMethodError sessionFactory - Hibernate ASM Spring java.lang.NoSuchMethodError sessionFactory 休眠提示 java.lang.NoSuchMethodError: org.hibernate.Session.createQuery - Hibernate thows java.lang.NoSuchMethodError: org.hibernate.Session.createQuery
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM