外部キーを持つオブジェクトを永続化すると、eclipselinkがオフになり、次のような検証クエリがログに記録されます。 eclipselinkがこのオブジェクトを見つけてバインドすることも確認します。私はそれがこれらの事のどちらかをしたくない。EcliplLink JPAの使用オブジェクトを永続化するときに、どのように関係検索を無効にするには?
基本的に私はオブジェクトAを保存しようとしていますが、AはオブジェクトBとの関係を持っています。新しいAを挿入すると、クラスBのインスタンスではなくBのIDですこの場合、Bのインスタンスを取得することには関心がありません。
このような何か:
String b_id = "12345";
A a = new A();
B b = new B();
b.setId(b_id);
a.setB(b);
//begin tran
try {
em.persist(a);
//commit
} catch (Exception e) {
e.printStackTrace();
//rollback
}
ログでこれが発生します。
Execute query DoesExistQuery(referenceClass=B)
SELECT ID FROM B WHERE (ID = ?)
bind => [12345]
は、今私はEclipseLinkのは、このIDとBが存在するかどうかを確認するために行くことなくAを挿入すると、私はこのBをBのインスタンスであるAのフィールドにバインドしたくありません。
Eclipselinkがこのオーバーヘッドを挿入に追加したくないのは、データベースが実行されるためですとにかく挿入前の検証です。この場合、Bの実際のインスタンスは必要ありません。
返信いただきありがとうございます!
これはやっているようでした!私はまだ選択とログのバインドが表示されますが、 "Execute query DoesExistQuery"は表示されませんので、私たちは明確であると想定しています。ありがとう! – jhnclvr