Hibernateを使用して、オブジェクト全体ではなく単一の列を選択したいと思います。これまでのところ私はこれを持っています:
List<String> firstname = null;
firstname = getSession().createCriteria(People.class).list();
私の問題は、上記のコードがPeopleテーブル全体を「名」だけでなくオブジェクトとして返すことです。オブジェクト全体ではなく「名」のみを返すように指定する方法がわかりません。
次のように投影を設定できます。
.setProjection(Projections.property("firstname"))
これを使用すると、名字のみを取得できます。
同じシナリオでスタック上の別のリンクを見つけました。これが役立つことを願っています オブジェクト全体ではなくオブジェクトの1つの要素のみを返すために休止状態基準を使用する方法?
2つ以上の列をクエリし、クエリから値を取得する必要がある場合、これがその方法です。
....
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];
....
}
条件ベースの投影が必要な場合は、ProjectionListを使用できます。
ProjectionList prjection = Projections.projectionList();
if(abc){
prjection.add(Projections.property("firstname"));
}
else if(xyz){
prjection.add(Projections.property("lastname"));
}
........
criteria.setProjection(prjection);