Pas*_*ent 11
Hibernate不支持order by子句中的算术表达式.引用第14.12节.Hibernate文档的group by子句:
group by子句和order by子句都不能包含算术表达式.
实际上,以下hql查询将不会返回正确排序的结果:
select p from Player p order by (p.wins/p.gamesPlayed)
Run Code Online (Sandbox Code Playgroud)
而且我认为你不能分开,org.hibernate.criterion.Property所以Criteria API无法解决这个问题.
所以我建议使用计算属性(使用公式),例如使用注释:
private float wins;
private float gamesPlayed;
@Formula(value = "WINS/GAMESPLAYED")
private float ratio;
Run Code Online (Sandbox Code Playgroud)
这将允许使用Criteria API进行以下查询:
session.createCriteria(Player.class).addOrder(Order.desc("ratio"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5964 次 |
| 最近记录: |