【发布时间】:2011-06-27 14:25:26
【问题描述】:
我在应用程序中有 2 个实体:组和用户,它们之间的多对多连接。当一个用户被创建时,它应该加入几个现有的组。
我看到了展示如何更新 3 个表的示例(添加了 2 个实体,并在连接表中创建了一个新行)。在我的情况下,不应更新 Groups 表,我得到 org.hibernate.exception.ConstraintViolationException 因为 3 个查询正在运行,其中一个正在尝试插入表中已经存在的 Group。
谢谢
【问题讨论】:
-
我不明白你是否真的尝试过你提到的例子,但如果这两个实体已经存在,那么 Hibernate 只会创建它们之间的链接,有效地只发出一个 SQL(用于连接表) .如果您更改用户和/或组,则会发出更多 SQL,但这是意料之中的。您是否遇到任何具体问题?
-
我尝试了基本示例,但遇到了问题:当我创建用户并向其添加组时,我收到 ConstraintViolationException 因为它也在尝试插入组。
-
连接表上的约束(唯一/主要)是什么?您是否有一个带有主键的额外列,或者唯一/主键是组和用户外键引用的复合体。
-
在我的连接表中没有约束。两个实体表中都定义了约束。现在我发现如果我在数据库中查找服务,将其添加到用户,然后持久化用户,它可以正常工作。大概就是这样的解决方案? Services 表有 GeneratedValue ID 和 UniqueConstraint。
标签: hibernate jpa many-to-many