質問

していく一会の設定このように、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 マッピング設定 lazyno-proxy.とするとプロパティはNULLになるまでの最初のクゲッター方法。これを使ってバイトコードを計測するものではありませんが一般的に使用します。使用HQL join fetch ませんの移植などの不動産物件おいて明示的に指定 fetch all properties としています。

の検討 lazy="proxy" 代わりに(実際にはそのデフォルトの多くに)を初期化してください物件でプロキシオブジェクトを含む gigVenue 識別子の最初の選択し、検索の実体は一度にアクセス GigVenue's"。を使用 join fetch にHQLはまた、この場合、取得満 GigVenue インスタンスの初期選択され画面が変更されます

以上の設定 fetch="select" も疑問;だがないほうがよいとってはデフォルト join 設定で機能を有効にする必要が用外部接合のために取得.

他のヒント

計装は本当にクエリには影響しないと、彼らはどのように働きますか。なぜ正確にクエリでフェッチをやっていますか?あなたは物事をスピードアップしようとしていますか?

そしてまた小さな疑問、念のために、どのようにあなたがのない値がnull の知っていますか? Javaデバッガを介して、または実際にで「取得」メソッドを呼び出すことであるということですか?あなたが実際にフィールドを求めるまでの計測では、フィールドは一般的に、nullになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top