OnToMany ManyToOne OneToOne

1405 ワード

一、OnToManyとManyToOnePO:BookとComment、1つのBookには複数のコメント(Comment)が含まれており、この場合は1対多と多対一のマッピングでデータのロードを実現する必要がある.
 
 
@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に設定する必要があります.