java - 通过 Hibernate Criteria 在列表中查找具有多个唯一元素的对象

标签 java hibernate criteria

我有一个类A,其中包含元素B的列表。每个B还有一个对象C。我需要做的是找到A的实例,其中至少有两个B实例具有不同的C实例列表。

public class A {
   long id;
   List<B> elements;
}

public class B {
    long id;
    C object;
}

public class C {
    long id;
}

我已经尝试了一堆不同的东西,直接比较,创建两个别名,DetachedCriteria,要么我得到 0 行,要么我得到至少有一个 B 的每一行,要么我得到一个异常。我从来没有得到符合我想要的一行。

我要疯了,有人知道我如何让它工作吗?

最佳答案

一如既往,一旦我最终屈服并将问题作为问题发布,我很快就会找到解决方案。

Criteria crit = session.createCriteria(A.class, "a");

DetachedCriteria cCount = DetachedCriteria.forClass(A.class, "a2");

cCount.createAlias("a2.elements", "elements2");
cCount.add(Restrictions.eqProperty("a2.id", "a.id");
cCount.setProjection(Projections.countDistinct("elements2.object.id");

crit.add(Subqueries.lt(1L, areaCount);

return (List<A>) crit.list();

关于java - 通过 Hibernate Criteria 在列表中查找具有多个唯一元素的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14932445/

相关文章:

java - 如果我在 java 中的 sql 命令中写 "INTEGER"或 "int"有关系吗?[sqlite]

java - 指纹认证成功后如何在android中移动到第二个布局

java - Java8 Hibernate5.2 的日期问题

java - Hibernate: Doman Model to JPA Entity/DTO & Merge() 设计模式或最佳实践

java - 为什么 Hibernate HQL 可以工作,而 Criteria 却不能?

Hibernate,按组合键的属性查询

java - 在两个不同内部框架java中的两个表之间拖放

java - 在枚举中添加带有特殊字符的日期

Spring Boot JPA 多数据源错误

hibernate - GORM - 在 Grails 中查询一对多关联