我想使用Hibernate來選擇單個列而不是整個對象。到目前爲止,我有這樣的:如何選擇使用Hibernate的列?
List<String> firstname = null;
firstname = getSession().createCriteria(People.class).list();
我的問題是,上面的代碼返回整個表的人作爲對象,而不是僅僅「名字」。我不知道如何指定只返回「firstname」而不是整個對象。
我想使用Hibernate來選擇單個列而不是整個對象。到目前爲止,我有這樣的:如何選擇使用Hibernate的列?
List<String> firstname = null;
firstname = getSession().createCriteria(People.class).list();
我的問題是,上面的代碼返回整個表的人作爲對象,而不是僅僅「名字」。我不知道如何指定只返回「firstname」而不是整個對象。
您可以設置投影此類似:
.setProjection(Projections.property("firstname"))
有了這個,你只能得到名字的回報。
我已經找到另一個與堆棧相同的場景鏈接。希望這也將有助於How to use hibernate criteria to return only one element of an object instead the entire object?
如果您需要查詢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);