【发布时间】:2011-06-12 15:08:20
【问题描述】:
基于这两个表(及其对应的实体):
profiles(id, email, name)
items(id, profile_id, rank, price)
Profile(email, name)
Item(profile, rank, price)
我必须列出所有配置文件,按项目的最佳排名排序(实际上这是一个“顶级配置文件”列表)。
这是你可以在 PHPMyAdmin 中执行的 SQL 请求,例如:
SELECT AVG(i.rank) AS rank, p.* FROM profiles AS p LEFT OUTER JOIN items AS i ON p.id = i.profile_id GROUP BY p.id ORDER BY rank DESC;
我是 JPA 的新手,我找不到一些关于使用 CriteriaBuilder 进行 LEFT OUTER JOIN 的示例(如果这样做是正确的)。
如果有人能引导我走上正确的道路,我将不胜感激(我不是要求别人做我的工作,只是有很好的线索)。
非常感谢! :)
【问题讨论】:
-
您使用哪种 JPA 实现?据我记得,在 Hibernate 中通过 JPA 2.0 Criteria API 表达这样的查询存在一些问题。
-
我使用 Play!框架(playframework.org/documentation/1.1/jpa),但我不能告诉你他们使用哪个版本(如果这就是你问的原因:/)