gpt4 book ai didi

java - 没有 Hibernate session 绑定(bind)到带有 generic-hibernate-dao 库的线程

转载 作者:行者123 更新时间:2023-12-01 05:37:22 27 4
gpt4 key购买 nike

我正在使用 Spring 3.0.5、Hibernate 3.3 和 generic-hibernate-dao 。我已配置 Hibernate SessionFactory 如下:

<bean id="sessionFactory"   class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean?"> 
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="packagesToScan" value="com.xxx.re.admin.model" /> <property name="hibernateProperties">

<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">validate</prop>
</props>
</property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory? (alternative
to JTA) -->
<tx:annotation-driven />

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager?">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

我创建了一个 BaseDAOImpl 并使用域 DAO 进行了扩展,如下所示:

public class BaseDAOImpl<T, ID extends Serializable> extends GenericDAOImpl<T, ID> {
@Autowired @Override public void setSessionFactory(SessionFactory? sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}

@Repository public class LocaleDAOImpl extends BaseDAOImpl<Locale, Long> implements LocaleDAO {

}

在访问我的 spring Controller (调用 dao.findAll())时,我收到以下错误:

org.hibernate.HibernateException?: 
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here.

最佳答案

使用 @Transactional 注释您的 Controller (或者可能是某种服务,如果它是 Controller 和 DAO 之间的中间件)。服务其实是比较好的地方,不然就需要地方<tx:annotation-driven />*-servlet.xml还有 MVC 配置文件。

我从未使用过这个库(我个人使用 Spring 产品组合中的 Spring Data JPA),但文档没有提及任何有关事务的内容,所以我想这取决于用户来配置它们。

更新:看看他们提供的示例,我似乎是对的:

@Transactional
public class CitizenServiceImpl implements CitizenService {
//...

http://code.google.com/p/hibernate-generic-dao/source/browse/trunk/sample/jpa-hibernate-maven/src/main/java/sample/googlecode/genericdao/service/CitizenServiceImpl.java?r=635

关于java - 没有 Hibernate session 绑定(bind)到带有 generic-hibernate-dao 库的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com