A simple question:
In this example I need to retrieve all objects, but these objects must have distinct msgFrom fields.
When I use
List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);
I get next error:
java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.model.Message
I suppose it's because Hibernate retrieves only one column, but I need an object, not column.
How can I do this?
I think that I can just scroll through a comma, i.e.
List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom, m.To, m.datetime, .......... from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);
But what if I have more than 20 fields here? Is there an easy solution?
Thanks!
Below is the sample query :
Alternatively, you can also use Criteria API.
Try this, it worked for me:
You can also use Criteria and Projection together :
Hope it help someone.
I have got a answer for Hibernate Query Language to use Distinct fields. You can use
SELECT DISTINCT(TO_CITY) FROM FLIGHT_ROUTE
. If you use SQL query, it return String List. You can't use it return value by Entity Class. So the Answer to solve that type of Problem is use HQL with SQL.From SQL query statement it got
DISTINCT ROUTE_ID
and input as a List. And IN query filter the distinctTO_CITY
fromIN
(List).Return type is Entity Bean type. So you can it in AJAX such as AutoComplement.
May all be OK
Hibernate criteria is pretty easy to select distinct results. If you want single result to be returned in the projected result, you may want to use:
If you want the result to include entire Message class with all its property set, you can use Hibernate result Transformer,
But it filters on the basis of root entity.
Or
As per your question first solution gives correct output.