JPA2从实体中选择列表

时间:2016-11-01 15:33:28

标签: java spring-data-jpa jpa-2.0

我有一个带有oneToMany的JPA映射,现在我想用CriteriaQuery选择这个集合,就像

query.select(Root_.collection).where(cb.equal(root.id, id))
List<ResultObject> results = em.createQuery(query).getResultList();

我无法想象这根本不可能......因为从存储库中它也是可能的......

用例是将多个查询的结果放在DTO中。

日Thnx!

1 个答案:

答案 0 :(得分:0)

  

不允许在 select子句中使用集合,因此这样做    query.select(Root_.collection)在Criteria API中不起作用。

你可以这样做,虽然不推荐做法(http://www.kumaranuj.com/2013/07/jpa-2-fetch-joins-and-whether-we-should.html):

npm run start

然后从上面开始,根据返回的不同Root行的数量,您现在可以访问root中oneToMany关系的集合,如下所示:

    root.fetch(Root_.collection);
    query.select(root).distinct(true).where(cb.equal(root.get("id"), id));

这里的要点是使用 root.fetch(Root_.collection) select(root).distinct(true)