次のマッピングが提供されていると仮定します。
<class name="A" table="a_table">
<id name="id"/>
<many-to-one name="entityB" column="fk_B" not-null="false" unique="true"/>
</class>
<class name="B" table="b_table">
<id name="id"/>
</class>
Javaクラス:
public class A {
private long id;
private B entityB;
// getters and setters skipped
}
起動時にHibernateによって外部キーが引き続き適用および作成されるように、Hibernateマッピングを変更することは可能ですか?ただし、クラスA
は次のようになります。
public class A {
private long id;
private long idOfB;
// getters and setters skipped
}
これに変換すると機能することは理解して<many-to-one...
い<property...
ますが、外部キーはデータベースによって強制されません。
オブジェクトB
が個別に初期化される場合と
されない場合があり、が呼び出されたorg.hibernate.LazyInitializationException: could not initialize proxy - no Session
ときに例外が発生することがあるため、これを行う必要があります。私はそれをとして持っていて、必要なときはいつでもオブジェクト全体をロードa.getB()
したいと思います。long idOfB
これにより、オブジェクトの読み込みもA
速くなります。
私の質問はこれa.getB().getId()
と非常に似ていると思いますが、提供された解決策(遅延読み込みを使用する)は私の場合は適切ではありLazyInitializationException
ませa.getIdOfB()
ん。
よろしくお願いします。