使用____多映射Hibernate分页



我是在手机上写的,所以请原谅这些蹩脚的代码示例。

我有一个多多关系的实体:

@JoinTable(name="foo", @JoinColum="...",         @InverseJoinColumn="...")
@ManyToMany
List list = new ArrayList();

我希望他们的数据以分页的方式被检索。

我知道setFirstResult和setMaxResults。是否有一种方法可以将其与映射一起使用?与中一样,我检索对象并获得充满内容的列表,该内容等于单个页面的记录数量,并具有适当的偏移量。

我想我只是不清楚做这件事的最好方法。我可以手动使用hibernate条件来达到这个效果,但我觉得这样缺少API。我有了这个映射,我想看看有没有办法用分页的方式来使用它

p。如果这是不切实际的,就说出来。而且,如果是的话,我还可以使用映射向连接表添加新条目吗?例如,如果实体是DB中的持久实体,但我还没有获取manymany列表,我可以向它添加一些新的东西吗?当它与级联持久时,它将被添加到连接表中而不清除其他条目?

作为查询一部分的实体之间的关系类型并不那么重要。有几种方法可以解决这个问题。

  1. 如果你的数据库支持LIMIT关键字在它的查询,你将能够使用它来获取数据集,假设你排序你的数据。注意,如果用户在页面之间导航时数据发生了变化,可能会看到一些重复或丢失一些记录。如果您的数据库更改为没有LIMIT关键字的数据库,您将不得不重新编写。

  2. 如果你需要在原始查询点冻结数据,你需要使用第三方框架或编写自己的框架来为你的查询获取id列表,然后将该列表拆分并在子集中按id获取分页。

Displaytag是我使用过的一个数据分页框架,因此我可以告诉你,它适用于大型数据集。它也是这个问题的较老的解决方案之一,并且不是扩展框架的一部分。http://displaytag.sourceforge.net/11/tut_externalSortAndPage.html

Table sorter是我遇到的另一个。它使用JQuery并在一次查询中获取整个数据集,所以严格来说它不符合"以分页方式获取数据"的标准。(这可能不适合大型集合)。http://tablesorter.com/docs/

本教程可能会有所帮助:http://theopentutorials.com/examples/java-ee/jsp/pagination-in-servlet-and-jsp/

如果你已经在使用一个框架,看看这个框架是否解决了分页:Spring MVC提供了一个数据分页器http://blog.fawnanddoug.com/2012/05/pagination-with-spring-mvc-spring-data.html

GWT提供一个数据分页器:http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/cellview/client/SimplePager.html

下面的参考可能也有帮助:

JDBC分页这也表明:http://java.avdiel.com/Tutorials/JDBCPaging.html

最新更新