0
我想寫一個隨機函數,給出第n個排序列表中的n是隨機的。 我使用休眠和我不想在DB排序表。 如何在不使用@Sort @OrderBy的情況下從數據庫檢索排序後的對象。休眠從數據庫中檢索排序後的對象
我想寫一個隨機函數,給出第n個排序列表中的n是隨機的。 我使用休眠和我不想在DB排序表。 如何在不使用@Sort @OrderBy的情況下從數據庫檢索排序後的對象。休眠從數據庫中檢索排序後的對象
您不想對數據庫中的表進行排序,因此無法檢索排序的項目。但是,您可以在檢索它們後以編程方式對它們進行排序。
讓我們假設你有一個Collection<Widget>
,其中Widget
是:
class Widget {
//id, version etc
private String name;
//getters and setters
}
和查詢類似
final List<Widget> result = /*create query*/.list();
現在,所有你需要做的,採取n
個分類項目是:
Optional<Widget> nth = result.stream().
sorted(Comparator.comparing(Widget::getName)).
skip(n - 1).
findAny();
如果至少有n
項然後nth.get
將返回它。否則它會拋出一個NoSuchElementException
。
你能解釋這個「我不想在數據庫中排序表」vs「從數據庫中檢索排序的對象」嗎?你仍然想對數據庫進行排序,但沒有提到註釋?排序 - >集合排序(Java級別排序),OrderBy - >與sql order相同,在db上排序。 – 2014-09-27 13:14:08