我有一个带有oneToMany的JPA映射,现在我想用CriteriaQuery选择这个集合,就像
query.select(Root_.collection).where(cb.equal(root.id, id))
List<ResultObject> results = em.createQuery(query).getResultList();
我无法想象这根本不可能......因为从存储库中它也是可能的......
用例是将多个查询的结果放在DTO中。
日Thnx!
答案 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)。