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