1

私のエンティティでは、現在そのようなマッピングがあります:

private Set<Sth> sths;

だから私が使うときcriteria.addOrder(Order.asc(Sth.ID))

次に、休止状態はクエリを生成しますorder by id ascが、セット内の要素はソートされていません(チェックするためにそれらを繰り返し処理します)-この場合、休止状態はある種のソートされたセットの実装を使用すると思いました(データが常にソートされたくない)。

でも使ったら..

@OrderBy(Sth.ID)
private Set<Sth> sths;

Hibernate はまったく同じ SQL クエリを生成しますが、今回はデータがソートされます。だから私の質問は - それはバグですか?私は休止状態3.4を使用しています。

OrderBy アノテーションの使用は私にとっては許容されますが、このプロパティで常に並べ替えを行いたくない場合があるため、アノテーションよりも基準クエリで並べ替えの指示を与えることをお勧めします。

何か案は?ハイバネートの上位バージョンでも同じように動作しますか?

4

1 に答える 1

0

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/collections.html#collections-sortedで読む

コレクションfilter()を使用して、実行時に任意の基準で関連付けを並べ替えることもできます。

sortedUsers = s.createFilter( group.getUsers(), "order by this.name" ).list();

ここで、group.getUsers()はクエリの結果です。

よろしく

于 2012-08-23T10:50:43.760 に答える