“MyUser”表和“Roles”表之间存在多对多关系,其中“joining table”=“USERS_ROLES”。 当我保存“MyUser”时::数据已成功保存到“MyUser”表、“角色”表和“连接表”表中。 我这样做::
@Entity
@Table(name = "users")
public class MyUser {
...
@ManyToMany(cascade = {CascadeType.PERSIST})
@JoinTable(name = "USERS_ROLES",
joinColumns = {@JoinColumn(name = "user_id_pk")},
inverseJoinColumns = {@JoinColumn(name = "role_id_pk")})
private List<Roles> listRoles;
...
}
就是这样::
@Entity
@Table(name = "roles")
public class Roles {
...
@ManyToMany(mappedBy="listRoles")
private List<MyUser> myUsersList;
...
}
我希望数据仅保存到“MyUser”表和“连接表”,即数据不保存到“Roles”表。
如果我使用“CascadeType.REMOVE”,则会引发错误。这是::“TransientObjectException:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:角色”。
嗯,就是“MyUser”对象包含了另一个“Roles”对象,我保存了“MyUser”,而我没有保存“Roles”,所以抛出这个错误。
问题:那么如何将数据仅保存到“MyUser”表和“joining table”表中,即数据不保存到“Roles”表中? 有人有什么想法吗?
您应该删除
CascadeType.PERSIST
,以便数据仅保存到 users
表和 USERS_ROLES
表,而不保存到 roles
表。