【问题标题】:Unable to start hibernate session factory bean无法启动休眠会话工厂 bean
【发布时间】:2012-08-20 20:48:57
【问题描述】:

这是我的休眠配置

 <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.h2.Driver"/>
        <property name="url" value="jdbc:h2:mem:/localhost/testDB"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="datasource" />
        <property name="packagesToScan" value="sample.model"/>
        <property name="annotatedPackages">
            <list>
                <value>sample.model</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect"> org.hibernate.dialect.H2Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>
    </bean>

我包含了这个依赖

 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.6-Final</version>
</dependency>

这里是例外

Caused by: java.lang.IllegalStateException: Expected method not found: java.lang.NoSuchMethodException: org.hibernate.cfg.Configuration.addAnnotatedClass(java.lang.Class)
    at org.springframework.util.ClassUtils.getMethod(ClassUtils.java:627)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.<clinit>(LocalSessionFactoryBuilder.java:79)
    ... 39 more

我在这里错过了什么?

【问题讨论】:

  • hibernate 3.5.6 版似乎不支持您的配置
  • org.hibernate.cfg.Configuration.addAnnotatedClass 仅存在于 Hibernate 4 而不是版本 3。

标签: java spring hibernate h2 hibernate-annotations


【解决方案1】:

看起来您的休眠注释 jar 文件的版本不正确。

您应该已经将 hibernate-core 作为依赖项。如果是这样,您可以在 POM 文件中注释掉您的 hibernate-annotations 依赖项。

【讨论】:

    【解决方案2】:

    解决方案是使用休眠 3 并添加此

    <prop key="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</prop>
    

    所以最终的配置是

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
            <property name="dataSource" ref="datasource" />
            <property name="packagesToScan" value="sample.model"/>
            <property name="annotatedPackages">
                <list>
                    <value>sample.model</value>
                </list>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect"> org.hibernate.dialect.H2Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">create</prop>
                       <prop key="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</prop>
                   </props>
            </property>
        </bean>
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 2011-02-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多