私はエンティティとテーブルの間でHibernate接続が初めてです。ハイバーネーション接続:@OneToMany、@JoinTableまたは@SecondaryTable?
私は、次のモデルスキーマ(データベース内のエンティティ)を持つようにしたい:
User Seminar SeminarParticipation
----- ------- --------------------
id id seminar_id
name name user_id
... ... role
私はエンティティと第三の表は、@ManyToManyによって自動的に作成されcoudことを知っているが、それは追加のフィールドを持っているので、I Javaでのアクセスを容易にする完全なエンティティを持ちたいと考えています。
また、Seminar
とUser
エンティティへの参加を取得したいと考えています。
私の質問は、将来的にDAOで複数のクエリを実行することなく、このエンティティをJavaで簡単にマッピングする方法です。
私はこのアプローチを試してみた:
Seminar
クラス(User
が似ている):
@Entity
@Table(name = "seminars")
public class Seminar {
@Id
@GeneratedValue
private int id;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<SeminarParticipation> participations;
...
}
そしてSeminarParticipation
クラス:
@Entity
@Table(name = "seminar_participations")
public class SeminarParticipation {
@Id
@GeneratedValue
private int id;
@ManyToOne
private Seminar seminar;
@ManyToOne
private User user;
@Column(nullable = false)
private int role;
...
}
をしかし、このコードは、別のテーブルを作成しようと、私の目的はこのエンティティをお互いに一致させることだけです。List<SeminarParticipation>
を01に変更すると感謝していますまたはUser
は、SeminarDAO
またはUserDAO
で作業する場合、SeminarParticipation
テーブルのエンティティにも影響します。
私はまた、あなたがスキーマに永続クラスをマッピングするための他のアプローチを持っている必要があり@JoinTableや@SecondaryTableと解決策を見つけましたが、彼らは助けるかもしれI'amわからない...
ありがとうございました。それは助けになった。しかし、私はまだマージカスケードに関連したいくつかの問題があります。このトピックを参照してください:http://stackoverflow.com/questions/36618201/hibernate-merge-does-not-delete-onetomany-old-entities – Luo