Package org.springframework.dao.support

# 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 Summary

Constructors
Constructor
Description
`DataAccessUtils()`

## Method Summary

Modifier and Type
Method
Description
`static int`
`intResult(Collection<?> results)`
Return a unique int result from the given Collection.
`static long`
`longResult(Collection<?> results)`
Return a unique long result from the given Collection.
`static <T> T`
`nullableSingleResult(Collection<T> results)`
Return a single result object from the given Collection.
`static <T> T`
`objectResult(Collection<?> results, Class<T> requiredType)`
Return a unique result object from the given Collection.
`static <T> Optional<T>`
`optionalResult(Collection<T> results)`
Return a single result object from the given Collection.
`static <T> Optional<T>`
`optionalResult(Iterator<T> results)`
Return a single result object from the given Iterator.
`static <T> Optional<T>`
`optionalResult(Stream<T> results)`
Return a single result object from the given Stream.
`static <T> T`
`requiredSingleResult(Collection<T> results)`
Return a single result object from the given Collection.
`static <T> T`
`requiredUniqueResult(Collection<T> results)`
Return a unique result object from the given Collection.
`static <T> T`
`singleResult(Collection<T> results)`
Return a single result object from the given Collection.
`static <T> T`
`singleResult(Iterator<T> results)`
Return a single result object from the given Iterator.
`static <T> T`
`singleResult(Stream<T> results)`
Return a single result object from the given Stream.
`static RuntimeException`
`translateIfNecessary(RuntimeException rawException, PersistenceExceptionTranslator pet)`
Return a translated exception if this is appropriate, otherwise return the given exception as-is.
`static <T> T`
`uniqueResult(Collection<T> results)`
Return a unique result object from the given Collection.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## 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