Package org.jooq

Interface Results

  • All Superinterfaces:
    Attachable, java.util.Collection<Result<Record>>, java.lang.Iterable<Result<Record>>, java.util.List<Result<Record>>, java.io.Serializable

    public interface Results
    extends java.util.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 Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void attach​(Configuration configuration)
      Attach all results and all of their contained records to a new Configuration.
      void detach()
      Detach all results and all of their contained records from their current Configuration.
      java.util.List<ResultOrRows> resultsOrRows()
      All the results or update counts in their order as fetched via JDBC.
      • Methods inherited from interface java.util.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        add, add, addAll, addAll, clear, contains, containsAll, equals, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray
    • Method Detail

      • resultsOrRows

        java.util.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