2011-07-25 52 views
1

我正在使用预测的标准从我的数据库中提取2列。不过,我想要一个结果作为2个简单元素列表而不是1个元素列表。带有休眠标准的投影列表的结果

我的标准:

最终的DetachedCriteria标准= DetachedCriteria.forClass(Valeur.class, “值”) 。新增(Restrictions.eq( “value.parametre.id” 参数标识)) (..更多的限制......) criteria.setProjection(Projections.distinct(Projections.projectionList() 。新增(Projections.property( “value.valeurVal”)) 。新增(Projections.property( “measure.mesureDate”) )));

criteria.addOrder(Order.asc("measure.mesureDate")); 

final List<Data> result = (List<Data>) criteria.getExecutableCriteria(_sessionFactory.getCurrentSession()).list(); 

我的数据对象:

private double _value; 
@NotNull 
private Date _date; 

在这种情况下,我有数据列表,但我想有两个列表:双一个和其他日期的。这可能吗 ?任何想法 ?

非常感谢你的帮助。 凡妮莎

回答

0

一旦你的回报清单,你可以将其输出到手动两个列表:

List<String> stringList = new ArrayList<String>(); 
List<Integer> integerList = new ArrayList<Integer>(); 
results = criteria.list(); 
if(results != null) { 
    for (Object[] row : results) { 
     stringList.add((String)row[0]); 
     integerList.add((Integer)row[1]); 
    } 
} 
+0

非常感谢您的回答。但是我仍然想知道是否可以直接用Hibernate来做这件事,因为我正在处理大量数据(每列近5万行),我宁愿避免一个循环“for”。 感谢您的帮助。 vanessa – Pennylane

+0

基于JavaDoc(http://docs.jboss.org/hibernate/core/3.5/javadocs/org/hibernate/Criteria.html#setResultTransformer(org.hibernate.transform.ResultTransformer)),似乎你只能在给定的Criteria查询中设置一个'ResultTransformer',所以看起来答案是否定的。 – atrain

+0

非常感谢您的帮助,我将使用您的解决方案。祝你有美好的一天。凡妮莎 – Pennylane