【发布时间】:2020-11-06 18:12:52
【问题描述】:
这是我目前的模型
@Entity
public class A {
@Id
private Long id;
String name;
...
@Entity
public class B {
@Id
private Long id;
@ManyToOne()
@JoinColumn(name = "a_id")
private A a;
@ManyToOne()
@JoinColumn(name = "c_id")
private C c;
...
@Entity
public class C {
@Id
private Long id;
private String status;
我想要一个 A 类列表,其中 C 类的状态为“活动”使用 Criteria API 和显式 JOIN 作为下面的示例,IN
Subquery<B> subQB = query.subquery(B.class);
Root<B> rootB = subQB.from(B.class);
subQB.select(rootB.get("c").get("id"))
.where(builder.equal(rootB.get("c").get("status"), "ACTIVE"));
predicates.add(root.get("id").in(subQB)); // root is class A
感谢您的帮助。
【问题讨论】:
-
“仅使用规范”是指“使用 Criteria API”?
-
@Andreas 是的。我会解决这个问题。
-
那么,你想重写现有的查询吗?还有,
A和B有关系吗? -
@Smutje 是的,我想重写。不,只有 B 与 A 和 C 有关系。
标签: java sql criteria specifications criteria-api