0

Hibernateで「distinct」HQL句を使用してクエリを実行し、リストを取得しようとしています。ただし、「ditinct」を使用すると、「distinct」を使用せずに返されるPOJOの代わりにJavaオブジェクトのリストが表示されます。オブジェクトの代わりにpojoを取得する良い方法はありますか?

期待どおりに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();

ただし、「個別の」句を追加する

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

...代わりに、オブジェクトのリストを返します。だから、私はmyPojosクラスのすべてのゲッターとセッターを失い、タイプセーフを失います。

これを実行して、ゲッター/セッターとタイプサフティを再評価するためのリストを取得する方法はありますか?

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 に答える