过滤计数不同于其他 table

Filter with count distinct from other table

我有两个表如下:

我试图找到每根至少有 2 种类型的引脚的电线,也可以有很多相同类型的引脚分配给 1 根电线。
我在 sql 中的逻辑是这样的:

select * from wire x where (select count(*) from pin y where x.id = y.wireId) = 2;   

我已经尝试过一些方法,最后一个是:

DetachedCriteria cav = criteriaQuery.createCriteria("pins");   
cav.setProjection(Projections.countDistinct("type")).setResultTransformer(Criteria.ROOT_ENTITY);
criteriaQuery.add(Subqueries.eq(Integer.parseInt(value), cav));   

这导致休眠中的 getTypedValues 出现空指针异常。

任何帮助将不胜感激,即使它只是更好地学习休眠的更多资源

可能不是最好的答案,但现在我通过这样做解决了它:

    DetachedCriteria a = DetachedCriteria.forClass(Pin.class);
    String groupBy = "wireId having count(DISTINCT type) >=2";
    String[] alias = new String[1];
    alias[0] = "wireId ";
    Type[] types = new Type[1];
    types[0] = Hibernate.STRING;

    a.setProjection(Projections.sqlGroupProjection("wireId", groupBy, alias, types));
    criteriaQuery.add(Subqueries.propertyIn("wireId", a));