使用HQL进行更新时需要StaleObjectStateException

时间:2016-07-18 07:20:02

标签: java hibernate hql

我是Hibernate的新手,我可以看到,当多个用户试图保留整个实体时,Hibernate会抛出StaleObjectStateException。但是,我使用HQL更新查询完成了大部分数据库更新。现在,我已经为HQL更新查询添加了一个额外条件,其中版本=:currentVersion'识别没有其他用户更新特定记录。它似乎工作正常。但是,问题是我有很多查询,我还必须将我的java对象中的版本号同步到DB中。有没有简单的方法来获得StaleObjectStateException'多用户更新期间的HQL查询更新?

1 个答案:

答案 0 :(得分:1)

你明白这是错的。当多个用户试图保留整个实体时,Hibernate会将StaleObjectStateException作为想要的行为抛出 "。这可以防止最后一个作者赢得并覆盖其前任的数据。通常你会捕获此异常并向用户显示一些错误消息,例如"有人更改了数据。请重试!"。您的HQL查询子句是错误的方式,将迫使您越来越多地修补代码。