了解Spring和“没有可用实际事务的EntityManager”

时间:2016-01-22 13:55:10

标签: java spring hibernate jpa transactions

我有一个带有Hibernate的Spring Boot应用程序,其中有一堆DAO用@Repository和Spring的@Transactional注释。一切正常。然后我决定将常用方法(持久化,查找,合并)移动到AbstractDao。编写操作(持久化,合并)开始抛出No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call异常。我尝试将@Transactional添加到AbstractDao,与我的期望相反,它修复了它。

为什么会这样?我认为,因为,与CGLIB不同,Spring使用接口而不是扩展类,它不起作用,我需要定义一个接口来声明而不是我的DAO。但我也猜测我正在混合Spring如何处理依赖管理和事务的概念。

有人可以解释为什么会有效吗?有没有更好的方法来处理这个问题?

0 个答案:

没有答案