hibernate多くの一hqlクエリが内部に加取得物件に関連していない
-
11-09-2019 - |
質問
していく一会の設定このように、hbm.xml:
<many-to-one name="gigVenue"
class="blah.blah.xxx" fetch="select"
lazy="no-proxy" not-null="true" >
<column name="N_VENUE_ID" precision="18" scale="0" not-null="true" />
</many-to-one>
使って頂いて結構で計測しい真流出荷します。
しかし実行にはhqlクエリ内の参加を取得するには、その他のテーブルのことが含まれる必要があるオブジェクトのその他のテーブルの値はnullになります。と言っても、あまりにもできるその他のテーブルの値のオブジェクトを作成したhibernate.
いてその問題なのか。
更新:
from Gig g inner join fetch g.gigVenue gv where g.artistId = :artistId and (g.territoryId = -1 or g.territoryId = :territoryId) order by g.gigDatetime desc
<set name="gigs" inverse="true" lazy="true" table="DSP_GIG" fetch="select">
<key>
<column name="N_VENUE_ID" precision="18" scale="0" not-null="true" />
</key>
<one-to-many class="blah.blah.Gig" />
</set>
解決
以降、ご利用中のバイトコードの計測ではなく協会がプロキシ(どうして?) を指定する必要があります。"フェッチすべてのプロパティ検索:
from Gig g fetch all properties ...
詳細 こちらの
更新: ご gigVenue
マッピング設定 lazy
へ no-proxy
.とするとプロパティはNULLになるまでの最初のクゲッター方法。これを使ってバイトコードを計測するものではありませんが一般的に使用します。使用HQL join fetch
ませんの移植などの不動産物件おいて明示的に指定 fetch all properties
としています。
の検討 lazy="proxy"
代わりに(実際にはそのデフォルトの多くに)を初期化してください物件でプロキシオブジェクトを含む gigVenue
識別子の最初の選択し、検索の実体は一度にアクセス GigVenue
's"。を使用 join fetch
にHQLはまた、この場合、取得満 GigVenue
インスタンスの初期選択され画面が変更されます
以上の設定 fetch="select"
も疑問;だがないほうがよいとってはデフォルト join
設定で機能を有効にする必要が用外部接合のために取得.
他のヒント
計装は本当にクエリには影響しないと、彼らはどのように働きますか。なぜ正確にクエリでフェッチをやっていますか?あなたは物事をスピードアップしようとしていますか?
そしてまた小さな疑問、念のために、どのようにあなたがのない値がnull の知っていますか? Javaデバッガを介して、または実際にで「取得」メソッドを呼び出すことであるということですか?あなたが実際にフィールドを求めるまでの計測では、フィールドは一般的に、nullになります。