(Note:我使用的是Play!框架,它使用Hibernate作为JPA实现。)
我有一个ID列表,我想通过保持ID列表中使用的顺序从数据库中获取项目。
假设我的清单是:444,222,333,111
我希望JPQL/HQL首先返回ID为#444的项目,然后返回ID为#222的项目,依此类推。
我试了一下:
id in (444,222,333,111) order by id=444 DESC, id=222 DESC, id=333 DESC, id=111 DESC
但似乎不起作用。
我是否可能或必须忘记“order by”部分,并在退货后手动重新订购产品?
5条答案
按热度按时间qyuhtwio1#
如果没有“自然”顺序,那么很可能需要手动排序;您 * 可能 * 能够依赖于DB排序(取决于DB和查询结构),但我认为这是有风险的。
从好的方面来说,除非你有大量的对象,否则开销是微不足道的。
wvyml7n52#
我想你必须用Java对这些项目进行排序:
6pp0gazn3#
即使是老问题也会在很久以后再次被问到。我用一个Map解决了这个问题:
2o7dmzc54#
这种特殊情况可以很容易地使用ORDER BY id DESC来处理,但我猜这只是一个选择不当的示例。
我认为这是不可能的,除非您能找到一种利用SQL来实现这一点的方法。
您应该有一个持久层来将对象从数据库Map到Java(您不应该将ResultSet传递到持久层之外)。
w7t8yxp55#
轻松一点