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时候是不知道如何来进行增删改的。