OnToMany ManyToOne OneToOne
1405 ワード
一、OnToManyとManyToOnePO:BookとComment、1つのBookには複数のコメント(Comment)が含まれており、この場合は1対多と多対一のマッピングでデータのロードを実現する必要がある.
二、OneToOne一対一のマッピング関係の場合、PO:UserとPO:UserInfoなど.プライマリ・キーを使用してポリシーを生成できます.@PrimaryKeyJoinColumnまたは@JoinColumn(name="外部キーフィールド名"を使用)どちらでもいいです.A@JoinColumn(name="外部キーフィールド名"を使用して、ただし、プライマリ・テーブルに追加のデータ列(フィールドu_id)Bとなる2つのエンティティがプライマリ・キーで関連付けられている場合は@PrimaryKeyJoinColumnを使用し、追加のデータ列にはなりません.注意:1.mappedBy=外部キー属性名2.@OrderBy(外部キー属性名)3.注記は属性の上に全部書くかgetterの上に全部書くか、混合書き方が間違っています:org.hibernate.MappingException: Could not determine type for: java.util.List, at table: t_book, for columns: [org.hibernate.mapping.Column(list)]4.@PrimaryKeyJoinColumn[/size]は@OneToOneコメントのみならず、他のタグとの併用も可能です.ここでoptionalは重要で、関連属性を空にすることはできません.遅延ロードを実現するには、この属性をfalseに設定する必要があります.
@Entity
@Table(name="t_book")
public class Book {
@OneToMany(cascade=CascadeType.ALL,mappedBy="book", fetch = FetchType.LAZY)
@OrderBy("id")
private List list;
//
}
@Entity
@Table(name = "t_comment")
class Comment{
@ManyToOne(targetEntity = Book.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "fk_b_id")
private Book book;
//
}
二、OneToOne一対一のマッピング関係の場合、PO:UserとPO:UserInfoなど.プライマリ・キーを使用してポリシーを生成できます.@PrimaryKeyJoinColumnまたは@JoinColumn(name="外部キーフィールド名"を使用)どちらでもいいです.A@JoinColumn(name="外部キーフィールド名"を使用して、ただし、プライマリ・テーブルに追加のデータ列(フィールドu_id)Bとなる2つのエンティティがプライマリ・キーで関連付けられている場合は@PrimaryKeyJoinColumnを使用し、追加のデータ列にはなりません.注意:1.mappedBy=外部キー属性名2.@OrderBy(外部キー属性名)3.注記は属性の上に全部書くかgetterの上に全部書くか、混合書き方が間違っています:org.hibernate.MappingException: Could not determine type for: java.util.List, at table: t_book, for columns: [org.hibernate.mapping.Column(list)]4.@PrimaryKeyJoinColumn[/size]は@OneToOneコメントのみならず、他のタグとの併用も可能です.ここでoptionalは重要で、関連属性を空にすることはできません.遅延ロードを実現するには、この属性をfalseに設定する必要があります.