【发布时间】:2014-10-15 01:22:11
【问题描述】:
假设我们有 2 个映射和相关的实体:Foo -> Bar。 Foo 将 FK 保存到 Bar。关键是,使用JPA Criteria Api 我需要INNER JOIN 这些表并获取所有Bar 实体。在没有映射声明反向关系的情况下如何实现?
【问题讨论】:
标签: java jpa criteria-api
假设我们有 2 个映射和相关的实体:Foo -> Bar。 Foo 将 FK 保存到 Bar。关键是,使用JPA Criteria Api 我需要INNER JOIN 这些表并获取所有Bar 实体。在没有映射声明反向关系的情况下如何实现?
【问题讨论】:
标签: java jpa criteria-api
@AVolpe 感谢您指出select
现在就是这样:
CriteriaQuery<Bar> query = b.createQuery(Bar.class);
Root<Foo> root = query.from(Foo.class);
query.where(b.equal(root.get("bar").get("id"),"10219431"));
Selection<? extends Bar> join = root.join("Bar",JoinType.INNER);
query.select(join);
Bar b=getEntityManager().createQuery(query).getResultList().get(0);
这个查询在INNER JOIN 和Foo 之后通过存储在Foo 中的FK 获得Bar(Bar 是Foo 的属性)
【讨论】: