2012-05-18 58 views
34

我想使用Hibernate來選擇單個列而不是整個對象。到目前爲止,我有這樣的:如何選擇使用Hibernate的列?

List<String> firstname = null; 

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

我的問題是,上面的代碼返回整個表的人作爲對象,而不是僅僅「名字」。我不知道如何指定只返回「firstname」而不是整個對象。

回答

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

您可以使用ProjectionList如果你想條件基座投影 例如

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

    ........ 

    criteria.setProjection(prjection); 
相關問題