3

最近、休止状態のCriteriaAPIを初めて試しています。

私はこのHQLと同等のことをしようとしていました

「タスクtからt.userTblを選択してください」

userTblプロパティは、Taskの多対1です。Task.userTblの関係は怠惰です。

だから私はこれを思いついた

Criteria criteria = session.createCriteria( Task.class, "t" );
criteria.setProjection( Projections.property( "t.userTbl" ) );
List results = criteria.list();

残念ながら、これはHQLとは異なることをします。

HQLでは、マッピングでuserTbl関係がレイジーに設定されていますが、HQLはUserTblの非プロキシオブジェクトを熱心にフェッチしてマテリアライズします。

ただし、Criteriaで、不要なプロキシのリストが返されます。私はsetFetchModeをいじりましたが、これは正しいことではなかったようです。基準で上記を適切に実行し、HQLのように非プロキシを取り戻す方法を知っている人はいますか?

ありがとう。

4

1 に答える 1

0

タスク クラスと userTbl の間の結合を強制してみてください。

于 2009-10-14T13:36:08.327 に答える