Class DataAccessUtils

java.lang.Object
org.springframework.dao.support.DataAccessUtils

public abstract class DataAccessUtils extends Object
Miscellaneous utility methods for DAO implementations.

Useful with any data access technology.

Since:
1.0.2
Author:
Juergen Hoeller
  • Constructor Details

    • DataAccessUtils

      public DataAccessUtils()
  • Method Details

    • singleResult

      @Nullable public static <T> T singleResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Collection.

      Returns null if 0 result objects found; throws an exception if more than 1 element found.

      Parameters:
      results - the result Collection (can be null)
      Returns:
      the single result object, or null if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Collection
    • singleResult

      @Nullable public static <T> T singleResult(@Nullable Stream<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Stream.

      Returns null if 0 result objects found; throws an exception if more than 1 element found.

      Parameters:
      results - the result Stream (can be null)
      Returns:
      the single result object, or null if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Stream
      Since:
      6.1
    • singleResult

      @Nullable public static <T> T singleResult(@Nullable Iterator<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Iterator.

      Returns null if 0 result objects found; throws an exception if more than 1 element found.

      Parameters:
      results - the result Iterator (can be null)
      Returns:
      the single result object, or null if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Iterator
      Since:
      6.1
    • optionalResult

      public static <T> Optional<T> optionalResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Collection.

      Returns Optional.empty() if 0 result objects found; throws an exception if more than 1 element found.

      Parameters:
      results - the result Collection (can be null)
      Returns:
      the single optional result object, or Optional.empty() if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Collection
      Since:
      6.1
    • optionalResult

      public static <T> Optional<T> optionalResult(@Nullable Stream<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Stream.

      Returns Optional.empty() if 0 result objects found; throws an exception if more than 1 element found.

      Parameters:
      results - the result Stream (can be null)
      Returns:
      the single optional result object, or Optional.empty() if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Stream
      Since:
      6.1
    • optionalResult

      public static <T> Optional<T> optionalResult(@Nullable Iterator<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Iterator.

      Returns Optional.empty() if 0 result objects found; throws an exception if more than 1 element found.

      Parameters:
      results - the result Iterator (can be null)
      Returns:
      the single optional result object, or Optional.empty() if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Iterator
      Since:
      6.1
    • requiredSingleResult

      public static <T> T requiredSingleResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Collection.

      Throws an exception if 0 or more than 1 element found.

      Parameters:
      results - the result Collection (can be null but is not expected to contain null elements)
      Returns:
      the single result object
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Collection
      EmptyResultDataAccessException - if no element at all has been found in the given Collection
    • nullableSingleResult

      @Nullable public static <T> T nullableSingleResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException
      Return a single result object from the given Collection.

      Throws an exception if 0 or more than 1 element found.

      Parameters:
      results - the result Collection (can be null and is also expected to contain null elements)
      Returns:
      the single result object
      Throws:
      IncorrectResultSizeDataAccessException - if more than one element has been found in the given Collection
      EmptyResultDataAccessException - if no element at all has been found in the given Collection
      Since:
      5.0.2
    • uniqueResult

      @Nullable public static <T> T uniqueResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException
      Return a unique result object from the given Collection.

      Returns null if 0 result objects found; throws an exception if more than 1 instance found.

      Parameters:
      results - the result Collection (can be null)
      Returns:
      the unique result object, or null if none
      Throws:
      IncorrectResultSizeDataAccessException - if more than one result object has been found in the given Collection
      See Also:
      • CollectionUtils.hasUniqueObject(java.util.Collection<?>)
    • requiredUniqueResult

      public static <T> T requiredUniqueResult(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException
      Return a unique result object from the given Collection.

      Throws an exception if 0 or more than 1 instance found.

      Parameters:
      results - the result Collection (can be null but is not expected to contain null elements)
      Returns:
      the unique result object
      Throws:
      IncorrectResultSizeDataAccessException - if more than one result object has been found in the given Collection
      EmptyResultDataAccessException - if no result object at all has been found in the given Collection
      See Also:
      • CollectionUtils.hasUniqueObject(java.util.Collection<?>)
    • objectResult

      public static <T> T objectResult(@Nullable Collection<?> results, @Nullable Class<T> requiredType) throws IncorrectResultSizeDataAccessException, TypeMismatchDataAccessException
      Return a unique result object from the given Collection. Throws an exception if 0 or more than 1 result objects found, of if the unique result object is not convertible to the specified required type.
      Parameters:
      results - the result Collection (can be null but is not expected to contain null elements)
      Returns:
      the unique result object
      Throws:
      IncorrectResultSizeDataAccessException - if more than one result object has been found in the given Collection
      EmptyResultDataAccessException - if no result object at all has been found in the given Collection
      TypeMismatchDataAccessException - if the unique object does not match the specified required type
    • intResult

      public static int intResult(@Nullable Collection<?> results) throws IncorrectResultSizeDataAccessException, TypeMismatchDataAccessException
      Return a unique int result from the given Collection. Throws an exception if 0 or more than 1 result objects found, of if the unique result object is not convertible to an int.
      Parameters:
      results - the result Collection (can be null but is not expected to contain null elements)
      Returns:
      the unique int result
      Throws:
      IncorrectResultSizeDataAccessException - if more than one result object has been found in the given Collection
      EmptyResultDataAccessException - if no result object at all has been found in the given Collection
      TypeMismatchDataAccessException - if the unique object in the collection is not convertible to an int
    • longResult

      public static long longResult(@Nullable Collection<?> results) throws IncorrectResultSizeDataAccessException, TypeMismatchDataAccessException
      Return a unique long result from the given Collection. Throws an exception if 0 or more than 1 result objects found, of if the unique result object is not convertible to a long.
      Parameters:
      results - the result Collection (can be null but is not expected to contain null elements)
      Returns:
      the unique long result
      Throws:
      IncorrectResultSizeDataAccessException - if more than one result object has been found in the given Collection
      EmptyResultDataAccessException - if no result object at all has been found in the given Collection
      TypeMismatchDataAccessException - if the unique object in the collection is not convertible to a long
    • translateIfNecessary

      public static RuntimeException translateIfNecessary(RuntimeException rawException, PersistenceExceptionTranslator pet)
      Return a translated exception if this is appropriate, otherwise return the given exception as-is.
      Parameters:
      rawException - an exception that we may wish to translate
      pet - the PersistenceExceptionTranslator to use to perform the translation
      Returns:
      a translated persistence exception if translation is possible, or the raw exception if it is not