【发布时间】:2012-10-23 13:07:45
【问题描述】:
我不明白如何加入 eclipse 链接与标准。 这是我的实体:
public class A implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@Column(name = "value")
private String value;
@OneToMany(mappedBy = "aid")
private Collection<B> bCollection;
}
public class B implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@JoinColumn(name = "a_id", referencedColumnName = "id")
@ManyToOne
private A aid;
}
我这样做:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<A> a = cq.from(A.class);
Join<A, B> j = a.join("aid",JoinType.INNER);
cq.distinct(true);
//and now what?
cq.where(cb.equal(a.get("id"), "aid"));
Object r = em.createQuery(cq).getResultList();
现在,如何将我的 join 子句绑定到 CriteriaQuery?
【问题讨论】:
-
'p' 未定义,不清楚您要查询什么或为什么需要加入。你想获取 b 和 A 吗?即“从 A 中选择一个 a 连接 fetch a.bCollection where a.id = :aid”?还是只是一个内部连接,所以 A 必须有一个 b?
-
正确的'p'。我试图获得 A 类,谁在 bCollection 中有 B 类。或类似的东西: Select * from A a inner join B b on a.id = b.aid (我需要 A 实体或 ArrayList 中 A 和 B 的所有字段,这并不重要)
标签: java eclipselink criteria-api