0

子エンティティのリストを日付順に並べ替える必要があります。現在、私はこのようにしています:

@OrderBy(clause = "arrivalDate ASC, arrivalTime ASC, departureDate ASC, departureTime ASC")

到着日と出発日には日付が含まれ、到着時間と出発時間には時間が含まれますが、それらはすべて日付型です。

リストに新しいアイテムを追加するまでは、すべて問題ありません。常にリストの最後に表示されます。どうすれば解決できますか?ありがとうございました

4

1 に答える 1

5

OrderBy 句は、Hibernate がデータベースからエンティティを選択した場合にのみ使用されます。リストがメモリに格納されると、Java の他のリストと同じように機能します。リストに何かを追加すると、List.add()メソッドは javadoc に記載されているように機能し、要素はリストの最後に追加されます。

新しいアイテムをリストの適切なインデックスに挿入する場合は、このインデックスを自分で見つけるか、リストに追加して、到着日に基づいてアイテムを並べ替える Comparator を使用してリストを並べ替える必要があります。 、到着時間など

もちろん、既にリストにある項目のフィールドの 1 つを変更すると、リストの順序が正しくなくなることに注意してください。

@OrderBy アノテーションを完全に回避し、getSortedItems()アイテムのリストのソートされたコピーを返すメソッドをエンティティに追加する必要があるかもしれません。

于 2012-06-15T07:26:40.903 に答える