JPA Could not open JPA EntityManager for transaction; Already value xxx for key xxx bound to thread

项目使用多个数据源,MyBatis和JPA事务管理器独立,使用Spring Data JPA保存数据时会报错。将MyBatis的事务管理器修改为JPA的事务管理器,可解决该问题,使程序正常执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用spring data JPA 保存数据时报错

org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.IllegalStateException: Already value [org.springframework.jdbc.datasource.ConnectionHolder@678c166f] for key [{
	CreateTime:"2020-12-02 08:59:18",
	ActiveCount:2,
	PoolingCount:1,
	CreateCount:3,
	DestroyCount:0,
	CloseCount:45,
	ConnectCount:47,
	Connections:[
		{ID:221256499, ConnectTime:"2020-12-02 08:59:19", UseCount:21, LastActiveTime:"2020-12-02 09:19:58"}
	]
}] bound to thread [http-nio-8082-exec-3]

由于项目使用了多个数据源,每个数据源都有自己的事务管理器,mybatis和JPA的事务管理器也是独立的,修改service方法对应的 transactionManager ,即可解决问题。
我这里是将Mybatis的事务管理器修改为JPA的事务管理器,程序正常执行。

    /**
     * 根据规则id逻辑删除规则
     * @param ruleId  规则id
     * @param request
     */
    @Override
    @Transactional(transactionManager = "terminalTxManager",rollbackFor = Exception.class)
    public E6Wrapper deleteRuleByRuleId(Integer ruleId,Integer userId ,HttpServletRequest request) {
 			...略
        return E6WrapperUtil.ok();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值