Существует ли (реальная) разница между fetchAny() и fetchOne()? Оба возвращают точную одну запись. Документация по API одинакова, но реализация (в github) отличается.
JOOQ - разница между fetchAny и fetchOne
Ответ 1
Цель двух методов различна:
-
Возвращает:
Результирующая запись или ноль, если запрос не возвращает записей.
Броски:
TooManyRowsException- если запрос возвратил больше чем одну запись -
Возвращает:
Первая результирующая запись или ноль, если запрос не возвращает записей.
По сути, когда вы используете fetchOne() запрос должен возвращать 0 или 1 запись. Когда вы используете fetchAny() запрос может вернуть любое количество записей, и, если база данных вернет какую-либо запись, будет возвращена первая, извлеченная из результирующего набора JDBC.
Обратите внимание на то, что fetchOne(), таким образом попытаться принести 2 записи из драйвера JDBC (решить, будет ли TooManyRowsException нужно быть выброшен), в то время как fetchAny() получает только самое большее 1 запись.
Ответ 2
javadoc объясняет разницу. fetchAny() возвращает первую запись, тогда как fetchOne() ожидает, что запрос вернет ноль или одну запись, и выдает исключение, если запрос возвратил более одной записи.