Class PanacheQueryImpl<Entity>

java.lang.Object
io.quarkus.hibernate.orm.panache.runtime.PanacheQueryImpl<Entity>
All Implemented Interfaces:
PanacheQuery<Entity>
Direct Known Subclasses:
CustomCountPanacheQuery

public class PanacheQueryImpl<Entity> extends Object implements PanacheQuery<Entity>
  • Constructor Details

  • Method Details

    • project

      public <T> PanacheQuery<T> project(Class<T> type)
      Description copied from interface: PanacheQuery
      Defines a projection class. This will transform the returned values into instances of the given type using the following mapping rules:
      • If your query already selects some specific columns (starts with select distinct? a, b, c…) then we transform it into a query of the form: select distinct? new ProjectionClass(a, b, c)…. There must be a matching constructor that accepts the selected column types, in the right order.
      • If your query does not select any specific column (starts with from…) then we transform it into a query of the form: select new ProjectionClass(a, b, c…) from… where we fetch the list of selected columns from your projection class' single constructor, using its parameter names (or their ProjectedFieldName annotations), in the same order as the constructor.
      • If this is already a project query of the form select distinct? new…, we throw a PanacheQueryException
      Specified by:
      project in interface PanacheQuery<Entity>
      Parameters:
      type - the projected class type
      Returns:
      a new query with the same state as the previous one (params, page, range, lockMode, hints, ...) but a projected result of the type type
    • page

      public <T extends Entity> PanacheQuery<T> page(Page page)
      Description copied from interface: PanacheQuery
      Sets the current page.
      Specified by:
      page in interface PanacheQuery<Entity>
      Parameters:
      page - the new page
      Returns:
      this query, modified
      See Also:
    • page

      public <T extends Entity> PanacheQuery<T> page(int pageIndex, int pageSize)
      Description copied from interface: PanacheQuery
      Sets the current page.
      Specified by:
      page in interface PanacheQuery<Entity>
      Parameters:
      pageIndex - the page index (0-based)
      pageSize - the page size
      Returns:
      this query, modified
      See Also:
    • nextPage

      public <T extends Entity> PanacheQuery<T> nextPage()
      Description copied from interface: PanacheQuery
      Sets the current page to the next page
      Specified by:
      nextPage in interface PanacheQuery<Entity>
      Returns:
      this query, modified
      See Also:
    • previousPage

      public <T extends Entity> PanacheQuery<T> previousPage()
      Description copied from interface: PanacheQuery
      Sets the current page to the previous page (or the first page if there is no previous page)
      Specified by:
      previousPage in interface PanacheQuery<Entity>
      Returns:
      this query, modified
      See Also:
    • firstPage

      public <T extends Entity> PanacheQuery<T> firstPage()
      Description copied from interface: PanacheQuery
      Sets the current page to the first page
      Specified by:
      firstPage in interface PanacheQuery<Entity>
      Returns:
      this query, modified
      See Also:
    • lastPage

      public <T extends Entity> PanacheQuery<T> lastPage()
      Description copied from interface: PanacheQuery
      Sets the current page to the last page. This will cause reading of the entity count.
      Specified by:
      lastPage in interface PanacheQuery<Entity>
      Returns:
      this query, modified
      See Also:
    • hasNextPage

      public boolean hasNextPage()
      Description copied from interface: PanacheQuery
      Returns true if there is another page to read after the current one. This will cause reading of the entity count.
      Specified by:
      hasNextPage in interface PanacheQuery<Entity>
      Returns:
      true if there is another page to read
      See Also:
    • hasPreviousPage

      public boolean hasPreviousPage()
      Description copied from interface: PanacheQuery
      Returns true if there is a page to read before the current one.
      Specified by:
      hasPreviousPage in interface PanacheQuery<Entity>
      Returns:
      true if there is a previous page to read
      See Also:
    • pageCount

      public int pageCount()
      Description copied from interface: PanacheQuery
      Returns the total number of pages to be read using the current page size. This will cause reading of the entity count.
      Specified by:
      pageCount in interface PanacheQuery<Entity>
      Returns:
      the total number of pages to be read using the current page size.
    • page

      public Page page()
      Description copied from interface: PanacheQuery
      Returns the current page.
      Specified by:
      page in interface PanacheQuery<Entity>
      Returns:
      the current page
      See Also:
    • range

      public <T extends Entity> PanacheQuery<T> range(int startIndex, int lastIndex)
      Description copied from interface: PanacheQuery
      Switch the query to use a fixed range (start index - last index) instead of a page. As the range is fixed, subsequent pagination of the query is not possible.
      Specified by:
      range in interface PanacheQuery<Entity>
      Parameters:
      startIndex - the index of the first element, starting at 0
      lastIndex - the index of the last element
      Returns:
      this query, modified
    • withLock

      public <T extends Entity> PanacheQuery<T> withLock(jakarta.persistence.LockModeType lockModeType)
      Description copied from interface: PanacheQuery
      Define the locking strategy used for this query.
      Specified by:
      withLock in interface PanacheQuery<Entity>
      Parameters:
      lockModeType - the locking strategy to be used for this query.
      Returns:
      this query, modified
    • withHint

      public <T extends Entity> PanacheQuery<T> withHint(String hintName, Object value)
      Description copied from interface: PanacheQuery
      Set a query property or hint on the underlying JPA Query.
      Specified by:
      withHint in interface PanacheQuery<Entity>
      Parameters:
      hintName - name of the property or hint.
      value - value for the property or hint.
      Returns:
      this query, modified
    • filter

      public <T extends Entity> PanacheQuery<T> filter(String filterName, Parameters parameters)
      Description copied from interface: PanacheQuery

      Enables a Hibernate filter during fetching of results for this query. Your filter must be declared with FilterDef on your entity or package, and enabled with Filter on your entity.

      WARNING: setting filters can only be done on the underlying Hibernate Session and so this will modify the session's filters for the duration of obtaining the results (not while building the query). Enabled filters will be removed from the session afterwards, but no effort is made to preserve filters enabled on the session outside of this API.

      Specified by:
      filter in interface PanacheQuery<Entity>
      Parameters:
      filterName - The name of the filter to enable
      parameters - The set of parameters for the filter, if the filter requires parameters
      Returns:
      this query, modified
    • filter

      public <T extends Entity> PanacheQuery<T> filter(String filterName, Map<String,Object> parameters)
      Description copied from interface: PanacheQuery

      Enables a Hibernate filter during fetching of results for this query. Your filter must be declared with FilterDef on your entity or package, and enabled with Filter on your entity.

      WARNING: setting filters can only be done on the underlying Hibernate Session and so this will modify the session's filters for the duration of obtaining the results (not while building the query). Enabled filters will be removed from the session afterwards, but no effort is made to preserve filters enabled on the session outside of this API.

      Specified by:
      filter in interface PanacheQuery<Entity>
      Parameters:
      filterName - The name of the filter to enable
      parameters - The set of parameters for the filter, if the filter requires parameters
      Returns:
      this query, modified
    • filter

      public <T extends Entity> PanacheQuery<T> filter(String filterName)
      Description copied from interface: PanacheQuery

      Enables a Hibernate filter during fetching of results for this query. Your filter must be declared with FilterDef on your entity or package, and enabled with Filter on your entity.

      WARNING: setting filters can only be done on the underlying Hibernate Session and so this will modify the session's filters for the duration of obtaining the results (not while building the query). Enabled filters will be removed from the session afterwards, but no effort is made to preserve filters enabled on the session outside of this API.

      Specified by:
      filter in interface PanacheQuery<Entity>
      Parameters:
      filterName - The name of the filter to enable
      Returns:
      this query, modified
    • count

      public long count()
      Description copied from interface: PanacheQuery
      Reads and caches the total number of entities this query operates on. This causes a database query with SELECT COUNT(*) and a query equivalent to the current query, minus ordering.
      Specified by:
      count in interface PanacheQuery<Entity>
      Returns:
      the total number of entities this query operates on, cached.
    • list

      public <T extends Entity> List<T> list()
      Description copied from interface: PanacheQuery
      Returns the current page of results as a List.
      Specified by:
      list in interface PanacheQuery<Entity>
      Returns:
      the current page of results as a List.
      See Also:
    • stream

      public <T extends Entity> Stream<T> stream()
      Description copied from interface: PanacheQuery
      Returns the current page of results as a Stream.
      Specified by:
      stream in interface PanacheQuery<Entity>
      Returns:
      the current page of results as a Stream.
      See Also:
    • firstResult

      public <T extends Entity> T firstResult()
      Description copied from interface: PanacheQuery
      Returns the first result of the current page index. This ignores the current page size to fetch a single result.
      Specified by:
      firstResult in interface PanacheQuery<Entity>
      Returns:
      the first result of the current page index, or null if there are no results.
      See Also:
    • firstResultOptional

      public <T extends Entity> Optional<T> firstResultOptional()
      Description copied from interface: PanacheQuery
      Returns the first result of the current page index. This ignores the current page size to fetch a single result.
      Specified by:
      firstResultOptional in interface PanacheQuery<Entity>
      Returns:
      if found, an optional containing the entity, else Optional.empty().
      See Also:
    • singleResult

      public <T extends Entity> T singleResult()
      Description copied from interface: PanacheQuery
      Executes this query for the current page and return a single result.
      Specified by:
      singleResult in interface PanacheQuery<Entity>
      Returns:
      the single result (throws if there is not exactly one)
      See Also:
    • singleResultOptional

      public <T extends Entity> Optional<T> singleResultOptional()
      Description copied from interface: PanacheQuery
      Executes this query for the current page and return a single result.
      Specified by:
      singleResultOptional in interface PanacheQuery<Entity>
      Returns:
      if found, an optional containing the entity, else Optional.empty().
      See Also: