web-dev-qa-db-ja.com

Hibernateを使用して列を選択するにはどうすればよいですか?

Hibernateを使用して、オブジェクト全体ではなく単一の列を選択したいと思います。これまでのところ私はこれを持っています:

 List<String> firstname = null;

 firstname = getSession().createCriteria(People.class).list();

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

36
ThreaT

次のように投影を設定できます。

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

これを使用すると、名字のみを取得できます。

同じシナリオでスタック上の別のリンクを見つけました。これが役立つことを願っています オブジェクト全体ではなくオブジェクトの1つの要素のみを返すために休止状態基準を使用する方法?

44
rizzz86

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];

    ....
}
7
Thai Tran

条件ベースの投影が必要な場合は、ProjectionListを使用できます。

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

    ........

    criteria.setProjection(prjection);
2
DDshah