【发布时间】:2012-01-05 05:24:41
【问题描述】:
我知道这对你们中的一些人来说可能是一个非常简单的问题,但我很难找出如何构建一个简单的 Select * From X Where Xa = :myparam使用 CriteriaBuilder。
现在,这是我迄今为止设法构建的代码:
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这个东西真的不熟悉,所以希望你能得到一些答案。
谢谢。
【问题讨论】: