JPQL 到条件
JPQL to Criteria
我关注类:
@Embeddable Class A // (with field String x);
Class B // (with field @Embedded A a)
Class C // (with field @OneToOne B b);
我想使用条件创建方法 getAllByXs(List<String> xs)
以获取 c.b.a.x
在 xs
中的所有 C 条目
内容为 SELECT c FROM C c JOIN c.b b WHERE b.a.x IN :param
的类型化查询工作正常。如何使用 Criteria 编写相同的查询?
基于条件的查询示例可能如下所示:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<C> cq = cb.createQuery(C.class);
Root<C> c = cq.from(C.class);
Join<C, B> b = c.join("b");
cq.select(c)
cq.where(b.get("a").get("x").in(cb.parameter(List.class, "param")));
List<C> = em.createQuery(cq)
.setParameter("param", Arrays.asList("foo", "bar", "baz"))
.getResultList();
我关注类:
@Embeddable Class A // (with field String x);
Class B // (with field @Embedded A a)
Class C // (with field @OneToOne B b);
我想使用条件创建方法 getAllByXs(List<String> xs)
以获取 c.b.a.x
在 xs
内容为 SELECT c FROM C c JOIN c.b b WHERE b.a.x IN :param
的类型化查询工作正常。如何使用 Criteria 编写相同的查询?
基于条件的查询示例可能如下所示:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<C> cq = cb.createQuery(C.class);
Root<C> c = cq.from(C.class);
Join<C, B> b = c.join("b");
cq.select(c)
cq.where(b.get("a").get("x").in(cb.parameter(List.class, "param")));
List<C> = em.createQuery(cq)
.setParameter("param", Arrays.asList("foo", "bar", "baz"))
.getResultList();