我使用seam框架和JPA 我有一个实体权限包含(id_permission,action_permission,discriminator_permission) 和包含(id_role,name_role)
的实体角色我在这两个实体之间使用双向关联ManyToMany生成包含(id_permission,id_role,name_role,action_permission,discriminator_permission)的连接表AccountPermission
@ManyToMany
@JoinTable(name="AccountPermission",
joinColumns={@JoinColumn(name="role_id",
referencedColumnName="role_id"),
@JoinColumn(name="name_role",
referencedColumnName="name_role"),},
inverseJoinColumns={@JoinColumn(name="action_permission",
referencedColumnName="action_permission"),
@JoinColumn(name="discriminator_permission",
referencedColumnName="discriminator_permission"),
@JoinColumn(name="permission_id",
referencedColumnName="permission_id")})
public List<Permission> getPermissions() {
return permissions;
}
public void setPermissions(List<Permission> permissions) {
this.permissions = permissions;
}
因此,如您所见,连接表中受影响的所有属性都来自两个表。 我的问题是属性“name_role”,我不想与它联合,因为它是一个可编辑的属性。那么如何在不连接的情况下将这些值保留在连接表上。
答案 0 :(得分:3)
这两个表的主键是什么?我猜id_role是角色的主键,而id_permission是许可的主键。
如果是这样,连接表应该只包含两个表的ID:
@ManyToMany
@JoinTable(name = "AccountPermission",
joinColumns = {@JoinColumn(name="role_id")}
inverseJoinColumns = {@JoinColumn(name="permission_id"})
public List<Permission> getPermissions()