Hibernate Restrictions.in列表中的第一个结果不是表单DB

Hibernate Restrictions.in列表中的第一个结果不是表单DB,hibernate,hibernate-criteria,Hibernate,Hibernate Criteria,我想更改结果的顺序。我不希望在数据库中找到第一项,而是列表中的第一个结果 例如,我的结果如下: criteria.add(Restrictions.in("name.id", listOfId)) 当我的数据库类似于: |ID |名称| |1 |名称1| |2 |名称2| |3 |名称3| |4 |名称4| 还有我的列表:listOfId[4,2,3] 结果是“2”,因为这是“我的listOfId”中“我的DB”的第一个结果 我希望结果是4。列表ID中的第一个。我建议您用

我想更改结果的顺序。我不希望在数据库中找到第一项,而是列表中的第一个结果

例如,我的结果如下:

criteria.add(Restrictions.in("name.id", listOfId))
当我的数据库类似于:


|ID |名称| |1 |名称1| |2 |名称2| |3 |名称3| |4 |名称4| 还有我的列表:listOfId[4,2,3]

结果是“2”,因为这是“我的listOfId”中“我的DB”的第一个结果


我希望结果是4。列表ID中的第一个。我建议您用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进行这种重新排序