我有两个类 - USER和ROLE。数据库中有相应的表,以及一个名为USER_ROLE的表,用于链接这两个表。
USER在“ id ”列上有一个主键,在“领域”和“ realm_user_id ”列上有一个复合唯一键。 ROLE在列“ role_id ”
上有一个主键USER_ROLE有3列 - role_id ,领域, realm_user_id 。
role_id 引用ROLE表中的 role_id ,( realm,realm_user_id )引用USER中的复合键。我无法访问数据库,因此无法更新架构。
用户和角色之间存在多对多关系。我希望能够在User上调用getRoles(),在Role上调用getUsers()。
类用户:
@Entity
@Table(name="USER")
public class User {
..other fields..
@ManyToMany(fetch = FetchType.LAZY, targetEntity=Role.class)
@JoinTable(name = "USER_ROLE",
joinColumns = {
@JoinColumn(name = "realm", nullable = false, updatable = false),
@JoinColumn(name = "realm_user_id", nullable = false, updatable = false)
},
inverseJoinColumns = { @JoinColumn(name = "role_id", nullable = false, updatable = false) })
private Set<Role> roles;
班级角色:
@ManyToMany(fetch = FetchType.LAZY,
cascade={CascadeType.PERSIST,CascadeType.MERGE},
targetEntity=User.class
)
@JoinTable(name = "USER_ROLE",
joinColumns = { @JoinColumn(name = "role_id", nullable = false, updatable = false) },
inverseJoinColumns={
@JoinColumn(name="realm",nullable=false, updatable=false),
@JoinColumn(name="realm_user_id",nullable=false, updatable=false)
})
private Set<User> users;
我收到以下错误:
A Foreign key refering User from Role has the wrong number of column. should be 1
我尝试创建一个单独的类,其中包含在 @IdClass 注释中引用的realm和realm_user_id,但由于用户已经在 id 上拥有主键,因此失败了。我尝试使用mappedBy注释,但这也不起作用。