2010-09-04 168 views
3

排除groupProperty我想上的第二條件中使用休眠條件對象爲子查詢,像這樣:休眠標準 - 從選擇

DetachedCriteria latestStatusSubquery = DetachedCriteria.forClass(BatchStatus.class); 
    latestStatusSubquery.setProjection(Projections.projectionList() 
      .add(Projections.max("created"), "latestStatusDate") 
      .add(Projections.groupProperty("batch.id")) 
    ); 

    DetachedCriteria batchCriteria = DetachedCriteria.forClass(BatchStatus.class).createAlias("batch", "batch"); 
    batch.add(Property.forName("created").eq(latestStatusSubquery)); 

的問題是,增加一個groupProperty自動該屬性添加到select子查詢,我找不到任何方法來阻止這種情況的發生。

結果當然是因爲子查詢返回太多值而導致數據庫錯誤。

有沒有人知道解決這個問題的方法?

+0

和STIL沒有答案? :'( – Cherry 2016-08-09 09:27:16

回答

1

嘗試像下面的示例,

DetachedCriteria subquery = DetachedCriteria.forClass(CustomerCommentsVO.class, "latestComment"); 
      subquery.setProjection(Projections.max("latestComment.commentId")); 
      subquery.add(Expression.eqProperty("latestComment.prospectiveCustomer.prospectiveCustomerId", "comment.prospectiveCustomer.prospectiveCustomerId")); 

objCriteria = objSession.createCriteria(CustomerCommentsVO.class,"comment"); 
      objCriteria.add(Subqueries.propertyEq("comment.commentId", subquery)); 
List lstComments = objCriteria.list(); 
+0

沒有分組 – mysomic 2010-11-26 17:43:05

+0

但實際上你與主表(group.Primary表中的definetly會有1個鍵)共同映射,並且取最大值,最後它成爲組本身。 – Jothi 2010-11-29 10:54:38