2016-06-01 13 views
1

私はこのようなケースを持っています: Class Foo 2人の子供(AB)を持ち、それぞれがObjectsです。休止状態で は、私が子供のリストのみを返したい場合は、私は私の基準の突起を使用します。Hibernate投影プロパティ全体オブジェクト

criteria.setProjection(Projections.property("A")); 

これは私A objectsのリストを与えるが、それらはすべてlazyロードされます。 id以外にアクセスしようとすると、obviosuly物事がうまくいかない。 私SQLクエリは確かにそれを示しています

select A from Foo ... 

を論理的には、唯一の私のidは私の性質の残りの部分を記入し、されていません。どのようにしてこの問題を解決すれば、すべてが埋め込まれたA objectsのリストが得られますか? 私はこの試みた:あなたはそれがより効率的であるHQL使用している場合は無大成功で

criteria.setResultTransformer(Transformers.aliasToBean(A.class)); 

....

+0

基準を使用する必要がありますか? –

+0

実際にはありませんか?私はこれをハイバネートクエリで行うことについて考えました:)。 –

答えて

1

を:

私はこのコード

使用を持っているでしょう基準を用いて
String hql = "SELECT f.A FROM Foo f"; 
Query query = session.createQuery(hql); 
List results = query.list(); 

Criteria crit = session.createCriteria(Foo.class); 
    ProjectionList proList = Projections.projectionList();  
    proList.add(Projections.property("A")); 
    crit.setProjection(proList); 
    List As= crit.list(); 

またはこのブロック

Criteria crit = session.createCriteria(Foo.class); 
crit.createAlias("A","a").setProjection(Projections.property("a")); 
List As= crit.list(); 
+0

私はこのような問題を実際に解決しました。私はそれが基準で可能かどうか疑問に思った。 –

+0

私は自分の答えを更新しました –

関連する問題