当前位置: 首页 > 面试题库 >

在Hibernate中按计算值排序结果

柴宏阔
2023-03-14
问题内容

我有一个具有ID,名称,胜利,games_played列的表Player。我将其映射到类Player。我想在Hibernate中执行以下查询(最好使用Criteria,如果无法使用Criteria,则HQL也会有所帮助)

从玩家顺序中选择*(获胜/ games_played)

我希望得到List 按他们的获胜率排序

感谢您的回答

帕洛


问题答案:

Hibernate不支持order
by子句中的算术表达式。引用第14.12节。Hibernate文档的group
by子句

group by子句和order by子句都不能包含算术表达式。

实际上,以下hql查询不会返回正确排序的结果:

select p from Player p order by (p.wins/p.gamesPlayed)

而且我认为您无法分开,org.hibernate.criterion.Property因此Criteria API无法解决此问题。

因此,我建议使用计算出的属性(带有公式),例如带有注释:

private float wins;
private float gamesPlayed;
@Formula(value = "WINS/GAMESPLAYED")
private float ratio;

这将允许使用Criteria API进行以下查询:

session.createCriteria(Player.class).addOrder(Order.desc("ratio"))


 类似资料:
  • 我有一张这样的桌子: 我想按组排序,然后按count(名称)排序,然后按rand()排序,结果如下: 我写了这个查询,但是如果我在group和rand之间添加count(Name),它会给我一个坏结果

  • 问题内容: 我有ElasticSearch 5,我想根据字段值进行排序。想象一下,具有类别(例如流派)的文档可能具有科幻,戏剧,喜剧等值,并且在进行搜索时,我想对值进行排序,以便首先出现喜剧,然后是科幻和戏剧。然后,我当然会按照其他条件在小组内订购。有人可以指出我该怎么做吗? 问题答案: 使用手动排序进行Elasticsearch排序 在可以根据字段的特定值分配顺序的情况下,这是可能的。 我已经使

  • 问题内容: 在MySQL中是否可以对2行的计算进行排序?例如,我有2行,并且我正在尝试执行以下操作: 这不会引发错误,但是也不会根据该计算结果进行排序。有没有办法做到这一点,还是我必须将lp / ap存储在数据库中? 问题答案: 是的,这是可行的,而且确实可行。查看以下测试: 将返回相同的结果。

  • 问题内容: 是否有-(NSArray *)keysSortedByValueUsingSelector:(SEL)comparator的类似物? 如何在不强制转换为NSDictionary的情况下执行此操作? 我试过了,但这似乎不是一个好的解决方案。 例: 问题答案: 尝试: 更新: 从beta 3更新到新的数组语法和排序语义。请注意,我正在使用,而不是在最大程度上减少数组复制。该代码可以做得更紧

  • 问题内容: 我想知道是否有按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 因此,它类似于(极其简化): 问题在于第二个查询不会以将ID放入IN()子句中的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,

  • 我有一个HashMap与作为关键和一个值作为价值。 我的目标是通过降序值对Hashmap进行排序。应在