ロール階層を実装したいのですが、JPA注釈を新しく使っています。JPA同じエンティティのオブジェクト間の多対多関係の注釈
- 役割を持つことができます。私は、次の関係を定義することができるようにしたい今
@Entity @Table(name="role") public class Role extends AbstractPersistable<Long> { private static final long serialVersionUID = 8127092070228048914L; private String name;
:
私は名前を持つ役割のエンティティと(
AbstractPersistable
経由暗黙の)IDを持っています役割は、多くの役割
方法WOUの子することができ、多くの子の役割
@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable(name = "role_hierarchy",
joinColumns = { @JoinColumn(name = "role_id")},
inverseJoinColumns={@JoinColumn(name="child_role_id")})
private List<Role> roles;
@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable(name = "role_hierarchy",
joinColumns = { @JoinColumn(name = "child_role_id")},
inverseJoinColumns={@JoinColumn(name="role_id")})
private List<Role> children;
私は適切なトラックにいますか?私は何が欠けていますか?
ありがとうございました!
EDIT: - 取り外し、それが解決されたように -
EDIT 2:
を私は自分のアプリケーション・スタックにいくつかのバグを持っているように見えます。モデル定義レベルでは、role_hierarchyはうまく動いているので、EDIT 1は気にしないでください。
しかし、両方の方法が動作しているようです(m:nテーブルエントリを作成しています。エンティティの子供):@ManyToMany
注釈
mappedBy
プロパティで両側のための結合列を定義するだけでなく、所有側と逆側を定義する
- 私の提案。
どういう違いがありますか?それは問題ですか?
が見えます。違いは何ですか?...? – Pete
@ Pete: 'mappedBy'を指定しないと、sinlge双方向の代わりに2つの一方向の関係を作成します。 2つの関係が同じ結合表を使用する場合、どのように動作するかはわかりません。 – axtavt