【问题标题】:JPQL to CriteriaJPQL 到标准
【发布时间】:2015-05-04 19:40:53
【问题描述】:
我有以下课程:
@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 编写相同的查询?
【问题讨论】:
标签:
java
jpa
criteria
jpql
【解决方案1】:
基于条件的查询示例如下所示:
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();