0

[注]実際の質問については、さらに下の更新を参照してください。誰にとっても役立つ場合に備えて、元のものを残しました...

これを機能させようとしているだけです。私が知る限り、ドキュメントの Kats/Kittens の例のように見えますが、使用しようとすると NullReferenceException が発生します。

CustomerOrder order = CurrentSession.CreateQuery(
    @"select new CustomerOrder(Name)
      from CustomerOrder o
      left join fetch o.OrderItems as items
      where o.Id = :Id")
    .SetParameter("Id", id)
    .UniqueResult<CustomerOrder>();

結合フェッチを省略した場合 (OrderItems なしで「CustomerOrder」を戻すため) は機能します。私の CustomerOrder には、'Name' の文字列を取るコンストラクターがあり、取得している注文のデータベースに OrderItems レコードがあります。

私は何を間違っていますか?

[更新] いくつかの値を使用して新しいオブジェクトをインスタンス化していて、実際に OrderItems をあたかも新しくインスタンス化されたオブジェクト。

私が必要としているのは、Name フィールドだけが入力された Order であり、そのコレクションまたは OrderItem の子であり、理想的には「説明」フィールドのみが入力されています。これを行いたいので、HQL が通常行うようにすべての列を取得しません (パフォーマンス上の理由から)。

これを行う最善の方法は何ですか?

ありがとう

4

1 に答える 1

0

JB Nizet と Rippo の洞察に感謝します。私はいくつかのことを試しましたが、パフォーマンスは良好です(とにかく私の目的のために)。問題が発生した場合は、ResultTransformer を調べますが、実行速度にはるかに大きな影響を与えるアプリのパフォーマンスの他の側面があると確信しています (プロファイリングなどを介して最適化できます)。列が取得されます。

于 2012-09-18T09:49:29.413 に答える