Module org.jooq
Package org.jooq

Interface Results

All Superinterfaces:
Attachable, Collection<Result<Record>>, Iterable<Result<Record>>, List<Result<Record>>, Serializable

public interface Results extends List<Result<Record>>, Attachable
A list of Result and update counts that can be returned by ResultQuery.fetchMany() calls and other calls that produce multiple cursors and update counts.

For backwards-compatibility (e.g. with ResultQuery.fetchMany()), this type extends List containing only the Result, not the rows, update counts, exceptions of interleaved updates. In order to get them all, call resultsOrRows() upon the results.

Exceptions

Some databases support raising several errors or exceptions per statement batch (e.g. SQLDialect.SQLSERVER):

 INSERT INTO t VALUES (1),(2),(3);
 RAISERROR('message 1', 16, 2, 3);
 RAISERROR('message 2', 16, 2, 3);
 SELECT * FROM t;
 RAISERROR('message 3', 16, 2, 3);
 

The above batch will produce:

  • An update count (3)
  • 2 exceptions
  • A result set
  • 1 exception

By default (or when explicitly specifying ThrowExceptions.THROW_ALL in Settings.getThrowExceptions()), this particular batch will produce a single exception corresponding to "message 1", with additional exceptions for "message 2" and "message 3" attached to SQLException.getNextException(), recursively.

When specifying ThrowExceptions.THROW_FIRST, only "message 1" is propagated. When specifying ThrowExceptions.THROW_NONE, then all exceptions are collected as results and are made available through resultsOrRows() in ResultOrRows.exception().

Author:
Lukas Eder
  • Method Details

    • resultsOrRows

      @NotNull @NotNull List<ResultOrRows> resultsOrRows()
      All the results or update counts in their order as fetched via JDBC.

      While List.iterator() and all the other methods inherited from the List API return the Result objects only, this method also includes update counts that may have occurred between two results.

      It can be safely assumed that:

       result.resultsOrRows()
             .stream()
             .filter(r -> r.result() != null)
             .map(r -> r.result())
             .collect(Collectors.toList())
             .equals(result);
       
    • attach

      void attach(Configuration configuration)
      Attach all results and all of their contained records to a new Configuration.
      Specified by:
      attach in interface Attachable
      Parameters:
      configuration - A configuration or null, if you wish to detach this Attachable from its previous configuration.
    • detach

      void detach()
      Detach all results and all of their contained records from their current Configuration.

      This is the same as calling attach(null).

      Specified by:
      detach in interface Attachable