微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有一种可移植的方式来具有“从T上选出ELECT FIRST 10 *”的语义?

如何解决是否有一种可移植的方式来具有“从T上选出ELECT FIRST 10 *”的语义?

抓住HibernateJPA。两者都熟悉各种数据库方言,并且将透明地处理令人讨厌的DB细节。

在Hibernate中,您可以使用Criteria#setFirstResult()和进行分页Criteria#setMaxResults()。例如

List users = session.createCriteria(User.class)
    .addOrder(Order.asc("id"))
    .setFirstResult(0) // Index of first row to be retrieved.
    .setMaxResults(10) // Amount of rows to be retrieved.
    .list();

在JPA中,您可以使用Query#setFirstResult()和进行类似操作Query#setMaxResults()

List users = em.createquery("SELECT u FROM User u ORDER BY u.id");
    .setFirstResult(0) // Index of first row to be retrieved.
    .setMaxResults(10) // Amount of rows to be retrieved.
    .getResultList();

解决方法

我想从数据库中读取数据,例如说1万条记录。

我在Wikipedia上找到了“结果限制”,而且很明显,这不能以可移植的方式使用sql来完成。

另一种方法是JdbcTemplate,它提供了许多查询方法,但是我如何确定已读取足够的行。通过诸如RowMapper和ResultSetExtractor之类的回调,无法表明已经读取了足够的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。