シームフレームワークとJPAを使用します。
私が含まれている結合テーブルのAccountPermissionを生成し、これら2つのエンティティ間の双方向関連多対多を使う(id_permission、action_permission、discriminator_permission) と(id_role、name_role)を含有するエンティティの役割JPA ManyToManyフィールド
が含まれているエンティティの権限を持っています(id_permission、id_role、name_role、action_permission、discriminator_permission)
@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;
}
だから、あなたはすべての属性が結合テーブルに影響が見ように2つのテーブルからです。 私の問題は属性 "name_role"にあります。これは、編集可能な属性であるため、私はそれにジョイントしたくありません。どのようにしてjoinを行わずにjoinテーブルにこれらの値を保持することができますか?
はい、ROLE_IDとpermission_idは、役割と権限のための2つの主キーがありますが、私はインクルードがテーブルを結合する役割を持続したときに私が必要accountpermissionにはrole_idとpermission_id、さらにrole_nameとpermission_actionが含まれます –
データベースの正規化について学びます。ジョインテーブルにはロールへの外部キー(role_nameを含む)とパーミッションへの別の外部キー(すでにpermission_actionが含まれている)があるため、この情報をジョインテーブルに入れる理由はありません。 –
はい、私はそれを知っています...しかし、問題は私がseamとjpapermissionstoreを使用するときです。私はpermission_actionとrole_nameをテーブルaccountpermissionに保存する必要があります –