jOOQ - fetchAny和fetchOne之间的区别

时间:2015-05-18 15:39:22

标签: java sql jooq

fetchAny()fetchOne()之间是否存在(实际)差异?两者都返回一个记录。 API文档是相同的,但实现(在github上)是不同的。

2 个答案:

答案 0 :(得分:13)

这两种方法的意图不同:

  • ResultQuery.fetchOne()

      

    <强>返回:

         

    结果记录,如果查询未返回任何记录,则返回null。

         

    <强>抛出:

         

    TooManyRowsException - 如果查询返回了多条记录

  • ResultQuery.fetchAny()

      

    <强>返回:

         

    第一个结果记录,如果查询未返回任何记录,则返回null。

实质上,当您使用fetchOne()时,查询必须返回0或1条记录。当您使用fetchAny()时,查询可能会返回任意数量的记录,如果数据库返回任何记录,则将返回从JDBC结果集中获取的第一个记录。

答案 1 :(得分:2)

The javadoc解释了差异。 fetchAny()返回第一条记录,而fetchOne()期望查询返回零或一条记录,如果查询返回多条记录,则抛出异常。