java - Hibernate Criteria - 从选择中排除 groupProperty

标签 java hibernate criteria

我想使用 hibernate 条件对象作为第二个条件的子查询,如下所示:

    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 子句中,我找不到任何方法来阻止这种情况的发生。

结果,当然是DB错误,因为子查询返回的值太多。

有人知道解决这个问题的方法吗?

最佳答案

像下面的示例一样尝试,

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();

关于java - Hibernate Criteria - 从选择中排除 groupProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642688/

相关文章:

java - 即使使用 transient 也不会出现 NotSerializedException

java - App Engine 搜索 api GeoPoint 搜索

java - Hibernate:使用集合条件(HashSet)

hibernate - 带有列表的 Restrictions.eq

Java 超正方 dyld : Symbol not found:

java - Android 应用程序没有收到 UDP 数据包

java - Hibernate 无法解析嵌入类的属性

mysql - 服务器端 Spring + Freemarker + Hibernate(EM) + MySql UTF-8 字符

mysql - 如何通过外键hql排序

java - hibernate中如何根据关系检索数据