使用规范的子句中的JPA-JHipster方法

时间:2020-09-09 12:10:15

标签: java hibernate jpa spring-data-jpa jhipster

我有2个实体A,B。A包含一个Set,我需要在QueryService中按B的字段X进行过滤。

我看到了谓词,但是我不知道如何使用它。

        StringFilter lf = new StringFilter(); lf.setEquals(value);
        return (root, query, builder) -> {
            Predicate p = builder.in(expression);
            return builder.and(p);
        };

“表达式”中放了什么????获得类似的东西:

SELECT * FROM A WHERE 
A.id in (select b.id_A from b where b.code_field ='alfacentauri')

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该以这种方式在内部谓词中使用gid

Subquery

另一种方法是使用return (root, query, builder) -> { Subquery<Long> subquery = query.subquery(Long.class); // if b.id_A has Long type Root<B> subRoot = subquery.from(B.class); final Predicate codeFieldPredicate = builder.equal(subRoot.get("code_field"), "alfacentauri"); subquery.select(subRoot.get("id_A")).where(codeFieldPredicate); return builder.in(root.get("id")).value(subquery); } 谓词

exists

它生成了一些不同的查询,但是结果将与预期的一样

相关问题