首页 > 解决方案 > 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 中的第一个。

标签: hibernatehibernate-criteria

解决方案


我建议您在 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 中执行此重新排序。


推荐阅读