ユーザー <---> グループなど、いくつかのエンティティ間に am:n の現実世界の関係がある ここで、この関係をモデル化し、それに基づいて追加情報 (フィールド「品質」など) を保存したいと考えています。
次のように、新しい結合テーブル user_group を作成する必要があると聞きました。
id | user_ref | group_ref | quality
----------------------------------
1 1 1 0.5
2 1 2 1.3
... ... ... ...
対応するエンティティには、 @ManyToOneアノテーションが付けられた 2 つの関連エンティティ (プライベート メンバー) ユーザーとグループがあります。一方、ユーザーとグループの両方に、関連する user_group-entities のセットがあり、どちらもプライベート メンバーであり、@OneToMany アノテーションで宣言されています。
3 つの質問があります。
- これは、JPA 2.0 の追加フィールドの問題をモデル化する正しい方法ですか?
- user_group のユーザーとグループの両方を主キーとして使用することは許可されていません。これらは有効な主キー タイプではないためです。新しいプライマリを宣言する必要がありますか。
- これは、これらの結合テーブル/エンティティの一般的なワークフローですか?
...
EntityManager em = ...
...
em.getTransaction().begin();
User u = new User("Pete");
Group g = new Group("Anonymous workaholics")
UserGroup ug = new UserGroup();
ug.addUser(u);
ug.addGroup(g);
em.persist(u); em.persist(g); em.persist(ug);
em.getTransaction().commit();
em.close()
どうもありがとう!