2010-09-04 192 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