一尘不染

HQL:如何选择按某个列区分的所有实体?

hibernate

一个简单的问题:
在此示例中,我需要检索所有对象,但是这些对象必须具有不同的msgFrom字段。
当我使用

List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);

我收到下一个错误:

java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.model.Message

我想这是因为Hibernate只检索一列,但是我需要一个对象,而不是列。
我怎样才能做到这一点?
我认为我可以只滚动逗号,即

List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom, m.To, m.datetime, .......... from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);

但是,如果我在这里有20多个字段怎么办?有一个简单的解决方案吗?

谢谢!


阅读 160

收藏
2020-06-20

共1个答案

一尘不染

下面是示例查询:

select e from Message e 
where e.msgFrom IN (select distinct m.msgFrom 
                      from Message m
                      WHERE m.msgTo = ? 
                      AND m.msgCheck = "0");

或者,您也可以使用Criteria API。

2020-06-20