我知道這可能是一個非常簡單的問題,但我很難找到如何建立一個簡單的選擇*從X其中Xa = :myparam使用CriteriaBuilder。現在JPA - CriteriaQuery與「WHERE」子句
,這是我設法到目前爲止構建代碼:
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<MyClass1> r = cq.from(MyClass1.class);
cq.select(r);
ParameterExpression<Long> p = cb.parameter(Long.class);
cq.where(cb.equal(r.get("anotherClass.id"), p));
javax.persistence.Query q = getEntityManager().createQuery(cq);
在那裏我申請這個查詢類是這一個:
@Entity
public class MyClass1 implements Serializable {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ANOTHERCLASS_ID")
private AnotherClass anotherClass;
...
}
@Entity
public class AnotherClass implements Serializable {
@Id
private Long id;
...
}
我只需要選擇所有記錄從myclass1「WHERE」anotherClass.id = 1L,我在哪裏設置「1L」,我知道它在p但在哪裏?
就是這樣。看起來很簡單,但我真的不熟悉這個CriteriaBuilder的東西,所以希望你能有一些答案。
謝謝。