hibernate - Hibernate Restrictions.in 列表中的第一个结果不是数据库
问题描述
我想更改结果的顺序。我不想要在数据库中找到的第一个项目,而是列表中的第一个结果。
例如,我的结果是:
criteria.add(Restrictions.in("name.id", listOfId))
当我的数据库是这样的:
| 身份证 | 姓名 |
| 1 | 名称1 |
| 2 | 名称2 |
| 3 | 名称3 |
| 4 | 名称4 |
和我的清单:listOfId[4,2,3]
结果是“2”,因为是我的数据库“IN”我的 listOfId 的第一个结果
我希望结果为 4。listOfId 中的第一个。
解决方案
我建议您在 Java 中重新排序结果。SQL/Hibernate 解决方案相当复杂。你基本上需要这样的东西:
ORDER BY CASE name.id WHEN 4 THEN 1 WHEN 2 THEN 2 WHEN 3 THEN 3 ELSE NULL END
由于这需要为每个参数组合一个新的 SQL,这将执行得很糟糕。因此,最好在 Java 中执行此重新排序。
推荐阅读
- jmc - Java Profiler JMC UI Dashboard 不显示在 Mac OS 上
- javascript - .map 中反应单选按钮的条件显示/隐藏
- android - 如何从xml将约束布局最小宽度设置为另一个视图的宽度
- c# - UWP:应用程序故障 1007 CStorageFileProxy 发布()
- jenkins - 使用 jenkins 设置 kubectl
- c - CS50 Pset3 音乐 - sizeof(string) 在做什么?
- javascript - 重新流式传输实时 rtmp 流
- c# - C# WPF,带取消支持和进度的异步文件夹解压
- c# - 使用 HttpClient.GetAsync() 进行 UTest
- python - 改进数据框的多次合并