2011-07-25 82 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