你如何select使用Hibernate的列?

我想select一个单独的列而不是整个对象,使用Hibernate。 到目前为止,我有这样的:

List<String> firstname = null; firstname = getSession().createCriteria(People.class).list(); 

我的问题是,上面的代码返回整个人民表作为一个对象,而不是“名字”。 我不知道如何指定只返回“firstname”,而不是整个对象。

您可以像这样设置投影:

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

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

我已经find另一个链接堆栈上的相同的情况。 希望这也将有所帮助如何使用hibernate标准只返回一个对象的元素,而不是整个对象?

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