【问题标题】:Equivalent to ResultSet.getRow() in Hibernate等价于 Hibernate 中的 ResultSet.getRow()
【发布时间】:2015-07-24 11:24:30
【问题描述】:

JavaDoc

int getRow() 抛出 SQLException

检索当前行号。第一行是数字 1,即 第二个数字 2,依此类推。

Hibernate 中有没有类似getRow() 的东西?

Reference

【问题讨论】:

  • 不确定你想要什么。 ResultSet 行的迭代是由 hibernate 抽象的。您是否需要为每个结果行自行导航或用例是什么。

标签: java sql hibernate resultset row-number


【解决方案1】:

在 Hibernate 中有没有类似 getRow() 的东西?

是的,您可以使用 Hibernate ScrollableResults.getRowNumber() 方法从结果中返回当前行号。

getRowNumber() 抛出 HibernateException

获取结果集中的当前位置。第一行是数字 0, 与JDBC相反。

注意:

请记住,不同之处在于休眠结果集中的行号从 0 开始。

【讨论】:

  • 我没有说我想访问特定位置的行我想要行号。
  • "休眠结果集从 0 开始。"所以我不想要这个。无论如何感谢您的努力。
  • 你可以简单地添加+1,所以使用.getRowNumber()+1,你会得到和JDBC一样的东西
  • 我希望 Hibernate 为我做这件事。
【解决方案2】:

提取List时,行号就是List中的元素索引:

List<Author> authors = (List<Author>) session
    .createQuery("select a from Author a where a.fullName = :fullName")
    .setParameter("fullName", fullName)
    .list();

而行号就是索引:

for (int rowNumber = 0; rowNumber < authors.size(); rowNumber++) {
    Author author = authors.get(rowNumber);
}    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 2014-03-08
    • 2011-11-06
    • 2014-08-08
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多