user755806
user755806

Reputation: 6815

Hibernate criteria to fetch the records?

I have below records in table.

    col1  col2  col3
------------------------
    1     Abc    IN
    2     DEF    CA
    3     Xyz    IN
    4     Cae    CA
    5     Pty    IN
    6     Zwe    DE
    7     Zwf    US

Here User sends an Input like IN or CA or DE etc. User input has to be mapped against col3. Now I need to query all the records from the table but the records matching the user input (IN or CA or DE) should appear first in the list then all other records should appear. How can I do it using hibernate criteria?

I need the results in below the order if user sends IN as an input.

    1     Abc    IN
    5     Pty    IN
    3     Xyz    IN
    2     DEF    CA
    4     Cae    CA
    6     Zwe    DE
    7     Zwf    US

Upvotes: 1

Views: 561

Answers (3)

S. Pauk
S. Pauk

Reputation: 5318

You could try to use ORDER BY CASE construct:

order by case when <your entity>.col3 = :parameter then '0' else '1' end asc

Upvotes: 1

injecteer
injecteer

Reputation: 20699

try the case ... when statements:

select *, ( case when col3=:input then '0' | col3 else col3 end) as sorter from table order by sorter asc

not sure, if it works, but if it does it would be exactly what you want

Upvotes: 0

Vishal
Vishal

Reputation: 108

There are two ways to solve this problem:
1. Create two queries one with equal to another with not equal to and all results for both in single list.
2. If you don't want to query database twice then you have to write algo in java that will remove elements for your input from list and add it another list and after iteration add remaining list at the end.

Upvotes: 0

Related Questions