我知道这可能是一个非常简单的问题,但我很难找到如何建立一个简单的选择*从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的东西,所以希望你能有一些答案。
谢谢。