我在表格中有以下记录。
col1 col2 col3
------------------------
1 Abc IN
2 DEF CA
3 Xyz IN
4 Cae CA
5 Pty IN
6 Zwe DE
7 Zwf US
此处用户发送输入,如 IN 或 CA 或 DE 等。用户输入必须映射到 col3 。现在我需要从表中查询所有记录,但是匹配用户输入的记录( IN 或 CA 或 DE )应首先出现在列表中,然后应显示所有其他记录。我怎么能用hibernate标准来做呢?
如果用户将 IN 作为输入发送,我需要在订单下方显示结果。
1 Abc IN
5 Pty IN
3 Xyz IN
2 DEF CA
4 Cae CA
6 Zwe DE
7 Zwf US
答案 0 :(得分:1)
您可以尝试使用ORDER BY CASE构造:
order by case when <your entity>.col3 = :parameter then '0' else '1' end asc
答案 1 :(得分:0)
有两种方法可以解决这个问题:
1.在单个列表中创建两个查询,一个与另一个不相等,并且所有结果都相同
2.如果您不想两次查询数据库,那么您必须在java中编写algo,它将从列表中删除输入元素并将其添加到另一个列表中,并在迭代后添加剩余列表。
答案 2 :(得分:0)
尝试case ... when
语句:
select *, ( case when col3=:input then '0' | col3 else col3 end) as sorter from table order by sorter asc
不确定,如果有效,但如果确实如此,那就完全是你想要的