37

我想使用 Hibernate 选择单个列而不是整个对象。到目前为止,我有这个:

 List<String> firstname = null;

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

我的问题是上面的代码将整个 People 表作为对象返回,而不仅仅是“名字”。我不确定如何指定只返回“名字”而不是整个对象。

4

3 回答 3

47

您可以为此设置投影:

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

有了这个,你只能得到名字作为回报。

我在堆栈上找到了另一个具有相同场景的链接。希望这也将有所帮助如何使用休眠条件仅返回对象的一个​​元素而不是整个对象?

于 2012-05-18T12:11:39.133 回答
8

如果您需要查询 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];

    ....
}
于 2013-11-21T03:10:19.633 回答
2

如果你想要条件基础投影,你可以使用 ProjectionList,例如

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

    ........

    criteria.setProjection(prjection);
于 2014-11-03T10:53:27.983 回答