2010-11-18 1 views
1
@Entity public class Organization {} 

@Entity public class User { 
    @ManyToOne 
    Organization org; 
} 

上記のコードの@ManyToOne interfaceは、組織IDのみがデータベースに格納されていても "Organization org"とモデル化されています。永続性のためにOrganizationオブジェクト全体のロードを避けることができるように、これをInteger orgIdとしてモデル化することはできません。@ManyToOneインタフェースにオブジェクト全体の代わりに外部キーを公開することは可能でしょうか?

異なる組織のユーザーを一括してインポートすると、ユーザーの永続性自体ではなく、組織の読み込みに時間がかかります。他の人がどのようにこの問題を処理しているか知りたいですか?

答えて

2

組織オブジェクト全体がロードされないように、Hibernate遅延ロード(FetchType.LAZY)には@ManyToOne(fetch=FetchType.LAZY)を使用する必要があります。 user.org.idにのみアクセスしている場合は、hibernateはorganization_idを見つけるためにテーブル全体に参加しないことを知っています。

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-singleassoc-fetching

を参照してください。そして、それは本当にあなたがあなたのコード内で使用される唯一のフィールドだ場合はいあなただけInteger orgIdをマッピングすることができます。

関連する問題