org.hibernate.exception.LockAcquisitionException

org.hibernate.exception.LockAcquisitionException: could not insert: [com.yinhoo.elink.domain.UserRole]

 

                   org.springframework.dao.CannotAcquireLockException: could not insert:

[com.yinhoo.elink.domain.UserRole]; nested exception is org.hibernate.exception.LockAcquisitionException:

could not insert:


数据库出现死锁!!!某个session(即数据库连接)在操作表UserRole 时,没有提交,而该连接非正常断开

(或没有 commit/rollback就断开),导致UserRole 对应的表被锁住,另外的session(即数据库连接)

试图对该UserRole 对应的表进行DML时 就会报资源正忙无法锁定的错误!
好好检查下代码!或者,看看锁住 对应的表UserRole 的到底是哪个session或哪个sql,然后相应的找原因。

 

删除的时候马上调用getHibernateTemplate().flush();

因为你反正同一个事务中了,删除后事务还没commit,马上做插入,自然出现重复主键问题
可以调用flush()方法马上提交

楼主,楼上两位说的很清楚了。
删除操作后立即调用getHibernateTemplate().flush()可以解决问题。
在同个事务中,最好不要再一张表上进行增删(改),再事务的控制下,hibernate最终生成SQL时候是不知道如何来进行增删改的。

 

 


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值