假设您有一堆带有“title”属性的 Article 对象。然后是一个带有 TITLE 列的 ARTICLE 表。TITLE 列具有唯一约束。
UI 在一页上显示所有文章,并带有一个用于编辑标题的文本字段。
想象一下,您有两篇文章 X 和 Y,X 的标题为“1”,Y 的标题为“2”。在页面中,将 Y 重命名为“2”,将 X 重命名为“1”,然后提交表单。将表单中的值直接复制到休眠对象并保存后,将发生 ConstraintViolationException。
如果您从集合中删除“1”篇文章,然后添加另一篇标题为“1”的文章并保存集合,也会发生这种情况。
那么处理这个 Hibernate 怪癖的最佳方法是什么?我觉得我应该重新排列 UI 或其他东西。在保存休眠对象之前手动检查这些条件似乎有点麻烦。