2012-05-18 14 views
34

私は、Hibernateを使ってオブジェクト全体の代わりに単一の列を選択したいと思います。これまで私はこれを持っています:Hibernateを使用して列を選択するにはどうすればよいですか?

私の問題は、上記のコードは "firstname"ではなくオブジェクトとしてPeopleテーブル全体を返してしまうことです。私は、オブジェクト全体の代わりに "firstname"だけを返すように指定する方法がわかりません。

答えて

43

あなたは、このような投影のために設定することができます。これにより

.setProjection(Projections.property("firstname")) 

は、あなただけの見返りにファーストネームを取得することができます。

同じシナリオでスタック上に別のリンクが見つかりました。これはまた、あなたが2つの以上の列を照会し、クエリから値を取得する必要がある場合、これはそれを行う方法であるHow to use hibernate criteria to return only one element of an object instead the entire object?

7

を助けることを願っています:

.... 
crit.setProjection(Projections.property("firstname")); 
crit.setProjection(Projections.property("lastname")); 

List result = crit.list(); 

... 

for (Iterator it = result.iterator(); it.hasNext();) { 
    Object[] myResult = (Object[]) it.next(); 
    String firstname = (String) myResult[0]; 
    String lastname = (String) myResult[1]; 

    .... 
} 
2

あなたは条件が必要な場合はProjectionListを使用することができます基準投影 たとえば

ProjectionList prjection = Projections.projectionList(); 
if(abc){ 
    prjection.add(Projections.property("firstname")); 
} 
else if(xyz){ 
    prjection.add(Projections.property("lastname")); 
} 

    ........ 

    criteria.setProjection(prjection); 
関連する問題