我想使用Hibernate选择单个列而不是整个对象。到目前为止,我有这个:
List<String> firstname = null;
firstname = getSession().createCriteria(People.class).list();
我的问题是上面的代码将整个People表作为对象返回,而不仅仅是“firstname”。我不知道如何指定只返回“firstname”而不是整个对象。
答案 0 :(得分:44)
您可以为此设置投影,如:
.setProjection(Projections.property("firstname"))
有了这个,你只能获得第一个名字。
我在堆栈上找到了另一个具有相同场景的链接。希望这也有助于How to use hibernate criteria to return only one element of an object instead the entire object?
答案 1 :(得分:7)
如果您需要查询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];
....
}
答案 2 :(得分:2)
如果您想要条件基础投影,可以使用ProjectionList e.g
ProjectionList prjection = Projections.projectionList();
if(abc){
prjection.add(Projections.property("firstname"));
}
else if(xyz){
prjection.add(Projections.property("lastname"));
}
........
criteria.setProjection(prjection);