2015-05-11 48 views
0

我一直在尋找一些時間,但沒有找到足夠的答案來做到這一點。對不同列的行進行計數行有多列

我有一個看起來像這樣的MSSQL:

select count(*) from 
    (select distinct supplierName, supplierNr 
    from dbo.InvoiceTypeBean 
    ) as a 

這將返回我想用純SQL

什麼,但我使用的標準和/或DetachedCriteria之後需要這個休眠:

的分離標準部分:

問題是附加我噸到標準:

Criteria criteria = session.createCriteria(clazz); 
.... Some atachement 
criteria.setProjection(Projections.rowCount()); 
int count = ((Number) criteria.uniqueResult()).intValue(); 

我真正需要的解決方案中使用的標準和/或的DetachedCriteria作爲查詢正在動態地建立,和更大的溶液構建使用它們。

回答

0

那麼找到了解決方案,我真正需要的只是在多列上使用不同的輸出行計數(可能已經指定更好,我知道)。

有興趣的解決方案:

session.beginTransaction(); 
Criteria criteria = session.createCriteria(clazz); 

ProjectionList p = Projections.projectionList(); 
p.add(Projections.property("supplierName")); 
p.add(Projections.property("supplierNr")); 
criteria.setProjection(Projections.distinct(p)); 

criteria.setResultTransformer(Transformers.TO_LIST); 

ScrollableResults results = criteria.scroll(); 
results.last(); 
count = results.getRowNumber() + 1; 
results.close(); 
session.getTransaction().commit(); 

凡有趣的部分是scrollableresult沒有用的DetachedCriteria的。

0

我不確定,但我認爲的使用可能是一個嚴重的性能瓶頸在巨大的記錄集的情況下。

相關問題