无法启动休眠会话工厂 bean
Posted
技术标签:
【中文标题】无法启动休眠会话工厂 bean【英文标题】:Unable to start hibernate session factory 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。 【参考方案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>
【讨论】:
以上是关于无法启动休眠会话工厂 bean的主要内容,如果未能解决你的问题,请参考以下文章
群晖 nas ds214play 刷了迅雷远程下载后硬盘无法休眠,求解决办法。
无法启动 bean 'webServerStartStop';无法启动嵌入式 Tomcat 服务器 - spring-boot-starter-web