7
criteria = createCriteria("employee");  
criteria.add(Restrictions.eq("name", "John"));  
criteria.addOrder(Order.asc("city"));
criteria.addOrder(Order.asc("state"));
List result = criteria.list();

このステートメントは、Employeeオブジェクトのリストを返します。Set重複データを削除するために、代わりに Employee オブジェクトを返すようにするにはどうすればよいですか?

以下のように返されたリストからセットを作成することでこれを達成できることは理解していますが、リストの並べ替え順序が失われます。そして、セットをソートするためのコードを書く必要はありません。

Set<Employee> empSet = new HashSet<Employee>(result); 
4

2 に答える 2

3

コメントとjavadocListが示唆するように、 from Criteriaを返す必要があります。したがって、唯一のオプションは、事後に一意を削除することです。KepaniHaole が言ったように、順序を維持したい場合 はLinkedHashSetを使用する必要があります。

于 2013-10-25T20:46:03.697 に答える