Hibernate从数据库中检索已排序的对象

时间:2014-09-27 10:49:19

标签: hibernate

我想编写一个随机函数,它给出n个随机排序列表。 我正在使用hibernate和我不想要DB中的排序表。 如何在不使用@Sort @OrderBy的情况下从数据库中检索已排序的对象。

1 个答案:

答案 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