org.appng.persistence.repository

## Class SearchRepositoryImpl<T,ID extends Serializable>

- java.lang.Object
- - org.springframework.data.jpa.repository.support.SimpleJpaRepository<T,ID>
  - - org.appng.persistence.repository.SearchRepositoryImpl<T,ID>

- Type Parameters:
    `T` - the domain class
    `ID` - the type of the Id of the domain class
  All Implemented Interfaces:
    SearchRepository<T,ID>, org.springframework.data.jpa.repository.JpaRepository<T,ID>, org.springframework.data.jpa.repository.JpaSpecificationExecutor<T>, org.springframework.data.repository.CrudRepository<T,ID>, org.springframework.data.repository.PagingAndSortingRepository<T,ID>, org.springframework.data.repository.query.QueryByExampleExecutor<T>, org.springframework.data.repository.Repository<T,ID>
  Direct Known Subclasses:
    EnversSearchRepositoryImpl, QueryDslSearchRepositoryImpl

      public class SearchRepositoryImpl<T,ID extends Serializable>
      extends org.springframework.data.jpa.repository.support.SimpleJpaRepository<T,ID>
      implements SearchRepository<T,ID>

  Default `SearchRepository` implementation.
  Use this class as the base class for your `SearchRepository` implementations:

       <repositories base-class="org.appng.persistence.repository.SearchRepositoryImpl">

  See 4.6.2. Adding custom behavior to all repositories from the reference Documentation for further details.
  Author:
    Matthias Müller

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Class<T>` | `domainClass`
    `protected javax.persistence.EntityManager` | `entityManager`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SearchRepositoryImpl(Class<T> domainType, javax.persistence.EntityManager entityManager)`
    `SearchRepositoryImpl(org.springframework.data.jpa.repository.support.JpaEntityInformation<T,?> entityInformation, javax.persistence.EntityManager entityManager)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `SearchQuery<T>` | `createSearchQuery()` Creates and returns a new `SearchQuery`.
    `void` | `detach(T entity)` Detaches the entity from the underlying `EntityManager`.
    `org.springframework.data.domain.Page<T>` | `findAll(org.springframework.data.domain.Pageable pageable)`
    `Collection<T>` | `getHistory(ID id)` Returns all previous revisions (starting with the newest) for the entity with the given ID (if the domain-class is audited).
    `T` | `getRevision(ID id, Number revision)` Returns the requested revision of the entity with the requested ID (if the domain-class is audited);
    `Number` | `getRevisionNumber(ID id)` If the domain-class is audited, the latest revision number of the entity is returned.
    `boolean` | `isUnique(ID id, String[] properties, Object[] values)` Checks whether the given properties are unique for this domain type.
    `boolean` | `isUnique(ID id, String property, Object value)` Checks whether the given property is unique for this domain type.
    `org.springframework.data.domain.Page<T>` | `search(org.springframework.data.domain.Pageable pageable)` Performs a paginated search. In contrast to `PagingAndSortingRepository.findAll(Pageable)`, this method is able to re-calculate the pagination.
    `org.springframework.data.domain.Page<T>` | `search(SearchQuery<T> searchQuery, org.springframework.data.domain.Pageable pageable)` Performs a paginated search with the given `SearchQuery`.
    `List<T>` | `search(String queryString, Object... args)` Performs a search with the given query-String.
    `org.springframework.data.domain.Page<T>` | `search(String queryString, String entityName, org.springframework.data.domain.Pageable pageable, Object... args)` Performs a paginated search based upon the given query-String.Note that the query string must start with "from <Entity> <entityName>"!

    - ### Methods inherited from class org.springframework.data.jpa.repository.support.SimpleJpaRepository

      `count, count, count, delete, delete, delete, deleteAll, deleteAllInBatch, deleteInBatch, exists, exists, findAll, findAll, findAll, findAll, findAll, findAll, findAll, findAll, findAll, findOne, findOne, findOne, flush, getCountQuery, getCountQuery, getDomainClass, getOne, getQuery, getQuery, getQuery, getQuery, getQueryHints, getRepositoryMethodMetadata, readPage, readPage, save, save, saveAndFlush, setEscapeCharacter, setRepositoryMethodMetadata`

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

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

    - ### Methods inherited from interface org.springframework.data.jpa.repository.JpaRepository

      `deleteAllInBatch, deleteInBatch, findAll, findAll, findAll, findAll, findAll, flush, getOne, save, saveAndFlush`

    - ### Methods inherited from interface org.springframework.data.repository.CrudRepository

      `count, delete, delete, delete, deleteAll, exists, findOne, save`

    - ### Methods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor

      `count, exists, findAll, findOne`

    - ### Methods inherited from interface org.springframework.data.jpa.repository.JpaSpecificationExecutor

      `count, findAll, findAll, findAll, findOne`

- - ### Field Detail

    - #### entityManager

          protected javax.persistence.EntityManager entityManager

    - #### domainClass

          protected Class<T> domainClass

  - ### Constructor Detail

    - #### SearchRepositoryImpl

          public SearchRepositoryImpl(org.springframework.data.jpa.repository.support.JpaEntityInformation<T,?> entityInformation,
                                      javax.persistence.EntityManager entityManager)

    - #### SearchRepositoryImpl

          public SearchRepositoryImpl(Class<T> domainType,
                                      javax.persistence.EntityManager entityManager)

  - ### Method Detail

    - #### findAll

          public org.springframework.data.domain.Page<T> findAll(org.springframework.data.domain.Pageable pageable)

      Specified by:
        `findAll` in interface `org.springframework.data.repository.PagingAndSortingRepository<T,ID extends Serializable>`
      Overrides:
        `findAll` in class `org.springframework.data.jpa.repository.support.SimpleJpaRepository<T,ID extends Serializable>`

    - #### search

          public org.springframework.data.domain.Page<T> search(org.springframework.data.domain.Pageable pageable)

      Description copied from interface: `SearchRepository`
      Performs a paginated search.
      In contrast to `PagingAndSortingRepository.findAll(Pageable)`, this method is able to re-calculate the pagination. This means, if `Pageable.getOffset()` returns a higher number than `Page.getTotalElements()`, a new `Pageable` is created, starting with page 0.
      Specified by:
        `search` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `pageable` - a `Pageable`
      Returns:
        a `Page` containing the result

    - #### search

          public org.springframework.data.domain.Page<T> search(String queryString,
                                                                String entityName,
                                                                org.springframework.data.domain.Pageable pageable,
                                                                Object... args)

      Description copied from interface: `SearchRepository`
      Performs a paginated search based upon the given query-String.Note that the query string must start with "from <Entity> <entityName>"!
      Specified by:
        `search` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `queryString` - the JPQL-query, starting with "from <Entity> <entityName>"
        `entityName` - the alias used for the entity within the query.
        E.g. if your query is `from Foo f`, then the entityName needs to be `f`.
        `pageable` - a `Pageable`
        `args` - the parameters to be applied to the `Query`, using `Query.setParameter(int, Object)`.
      Returns:
        a `Page` containing the result

    - #### search

          public List<T> search(String queryString,
                                Object... args)

      Description copied from interface: `SearchRepository`
      Performs a search with the given query-String.
      Specified by:
        `search` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `queryString` - the JPQL-query
        `args` - the parameters to be applied to the `Query`, using `Query.setParameter(int, Object)`.
      Returns:
        a `Page` containing the result

    - #### search

          public org.springframework.data.domain.Page<T> search(SearchQuery<T> searchQuery,
                                                                org.springframework.data.domain.Pageable pageable)

      Description copied from interface: `SearchRepository`
      Performs a paginated search with the given `SearchQuery`.
      Specified by:
        `search` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `searchQuery` - the `SearchQuery`
        `pageable` - a `Pageable` (optional)
      Returns:
        a `Page` containing the result. When `pageable` is null, a single page containing all results will be returned

    - #### getHistory

          public Collection<T> getHistory(ID id)

      Description copied from interface: `SearchRepository`
      Returns all previous revisions (starting with the newest) for the entity with the given ID (if the domain-class is audited).
      Specified by:
        `getHistory` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `id` - the ID of the entity
      Returns:
        the previous revisions of the entity, if any

    - #### getRevision

          public T getRevision(ID id,
                               Number revision)

      Description copied from interface: `SearchRepository`
      Returns the requested revision of the entity with the requested ID (if the domain-class is audited);
      Specified by:
        `getRevision` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `id` - the ID of the entity
        `revision` - the revision of the entity
      Returns:
        the requested revision of the entity with the requested ID. If either the entity or the revision does not exist, `null` is returned.

    - #### getRevisionNumber

          public Number getRevisionNumber(ID id)

      Description copied from interface: `SearchRepository`
      If the domain-class is audited, the latest revision number of the entity is returned.
      Specified by:
        `getRevisionNumber` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `id` - the ID of the entity to get the revision for.
      Returns:
        the revision of the entity, or `null` if the domain-class is not audited or an entity with this ID does not exist

    - #### isUnique

          public boolean isUnique(ID id,
                                  String property,
                                  Object value)

      Description copied from interface: `SearchRepository`
      Checks whether the given property is unique for this domain type.
      Specified by:
        `isUnique` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `id` - the ID of the entity to check, may be `null` if it's a new entity
        `property` - the name of the property to check uniqueness for, must not be `null`
        `value` - the value of the property to check uniqueness for, must not be `null`
      Returns:
        `true`, if there is no other entity where the given property has the given value, `false` otherwise

    - #### isUnique

          public boolean isUnique(ID id,
                                  String[] properties,
                                  Object[] values)

      Description copied from interface: `SearchRepository`
      Checks whether the given properties are unique for this domain type.
      Specified by:
        `isUnique` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `id` - the ID of the entity to check, may be `null` if it's a new entity
        `properties` - the names of the properties to check uniqueness for, must not be `null`
        `values` - the values of the properties to check uniqueness for, must not be `null`
      Returns:
        `true`, if there is no other entity where the given properties have the given values, `false` otherwise

    - #### detach

          public void detach(T entity)

      Description copied from interface: `SearchRepository`
      Detaches the entity from the underlying `EntityManager`.
      Specified by:
        `detach` in interface `SearchRepository<T,ID extends Serializable>`
      Parameters:
        `entity` - the entity to detach

    - #### createSearchQuery

          public SearchQuery<T> createSearchQuery()

      Description copied from interface: `SearchRepository`
      Creates and returns a new `SearchQuery`.
      Specified by:
        `createSearchQuery` in interface `SearchRepository<T,ID extends Serializable>`
      Returns:
        the `SearchQuery`

Copyright © 2011–2023 aiticon GmbH. All rights reserved.