hibernate级联更新偶尔锁表的问题

zhun_yi zhun_yi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我有3个实体类:entityA,entityB,entityC,分别对应数据库中的A,B,C3个表,表C是表B的子表,而表B是表A的子表

配置了级联关系:@Cascade({org.hibernate.annotations.CascadeType.ALL,org.hibernate.annotations.CascadeType.DELETE_ORPHAN})


现在我每次修改实体entityA的时候是启动事务,先删除它下面所有的entityB和entityC对象,然后再重新创建下属的entityB和entityC对象,然后调用update(entityA)级联更新。

这样操作每次输出的SQL是先insert新创建的entityB和entityC对象,然后update entityA对象,最后delete原来的entityB和entityC对象。

问题:一般情况下是正常的,偶尔会出现死锁的情况,查看数据库的trace文件发现是在delete entityB对象时死锁。

有经验的大侠们能判断出问题出在哪里吗?
...全文
评论 24
收藏 已收藏
分享
返回顶部
zhun_yi
Java EE 67,535 成员 225,843 内容