我有一个用@Transactional注释的公共方法,该方法调用一个私有方法,该私有方法调用另一个调用dao.save(...)的私有方法
但是执行保存调用时,出现以下错误:
Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
如果我将注释放在类型级别,那么它可以工作,但是事务保持开放状态很长时间。
有2个数据源和事务管理器,一个用于postgres,一个用于mysql。我在方法级别@Transactional(value =“ mySqlTransactionManager”)上调用mySql txn管理器,但是它仍然无法正常工作。
很明显我缺少了一些东西,但我不知道什么。
编辑结果证明这是一个过渡依赖问题。该Dao来自共享Dao工件,并扩展了自定义共享抽象通用DAO。在实施通用dao时,对实体和交易 经理 而不是经理进行了许多假设。