0

我正在尝试使用休眠中的“不同”HQL 子句执行查询并获取列表。但是,每当我使用“ditinct”时,我都会得到一个 java 对象列表,而不是不使用“distinct”而返回的 POJO。有没有一种很好的方法来获取 pojos 而不是对象?

按预期返回 POJO 列表的示例:

class myPojos () { ... (has some properties/fields) propOne, propTwo, propThree ...}

在 DAO 内部

Session s = HibernateUtil.currentSession();

List<myPojos> myPojoList = s
                .createQuery( "select from " getPojoClass().getName())
                .list();

但是,添加一个'distinct'子句

List<myPojos> myPojoList = s
                .createQuery( "select distcinct mpl.propOne, mpl.propTwo, mpl.propThree from " + getPojoClass().getName() + "mpl" )
                .list();

...而是返回一个对象列表。因此,我释放了 myPojos 类的所有 getter 和 setter,并释放了 type-safetey。

有没有办法做到这一点并获得一个列表来重新定义 getter/setteres 和 type-safey?

4

1 回答 1

1

您可以使用以下方法:select p from Pojo p where p.id in (select distinct id from Pojo). 您正在子查询中执行 distinct,让主查询只选择已经唯一选择的 id。

于 2012-07-06T21:23:18.207 回答