我想编写一个随机函数,它给出n个随机排序列表。 我正在使用hibernate和我不想要DB中的排序表。 如何在不使用@Sort @OrderBy的情况下从数据库中检索已排序的对象。
答案 0 :(得分:0)
您不希望对数据库中的表进行排序,因此您无法检索已排序的项目。但是,您可以在检索它们之后以编程方式对它们进行排序。
假设您有一个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
。