我有两个表,如下所示:
java - 过滤计数与其他表不同的计数-LMLPHP
我试图找到每根至少有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));


这导致hibernate中的getTypedValues中出现Null指针异常。

即使有更多资源可以更好地学习休眠,也将不胜感激

最佳答案

可能不是最好的答案,但现在我通过执行以下操作解决了它:

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

09-26 09:51