Package io.quarkus.mongodb.panache
Interface PanacheQuery<Entity>
- Type Parameters:
Entity
- The entity type being queried
- All Known Implementing Classes:
PanacheQueryImpl
public interface PanacheQuery<Entity>
Interface representing an entity query, which abstracts the use of paging, getting the number of results, and
operating on
List
or Stream
.
Instances of this interface cannot mutate the query itself or its parameters: only paging information can be
modified, and instances of this interface can be reused to obtain multiple pages of results.-
Method Summary
Modifier and TypeMethodDescriptionlong
count()
Reads and caches the total number of entities this query operates on.<T extends Entity>
PanacheQuery<T>Sets the current page to the first page<T extends Entity>
TReturns the first result of the current page index.Returns the first result of the current page index.boolean
Returns true if there is another page to read after the current one.boolean
Returns true if there is a page to read before the current one.<T extends Entity>
PanacheQuery<T>lastPage()
Sets the current page to the last page.list()
Returns the current page of results as aList
.<T extends Entity>
PanacheQuery<T>nextPage()
Sets the current page to the next pagepage()
Returns the current page.<T extends Entity>
PanacheQuery<T>page
(int pageIndex, int pageSize) Sets the current page.<T extends Entity>
PanacheQuery<T>Sets the current page.int
Returns the total number of pages to be read using the current page size.<T extends Entity>
PanacheQuery<T>Sets the current page to the previous page (or the first page if there is no previous page)<T> PanacheQuery<T>
Defines a projection class: the getters, and the public fields, will be used to restrict which fields should be retrieved from the database.<T extends Entity>
PanacheQuery<T>range
(int startIndex, int lastIndex) Switch the query to use a fixed range (start index - last index) instead of a page.<T extends Entity>
TExecutes this query for the current page and return a single result.Executes this query for the current page and return a single result.stream()
Returns the current page of results as aStream
.<T extends Entity>
PanacheQuery<T>withBatchSize
(int batchSize) Define the batch size for this query.<T extends Entity>
PanacheQuery<T>withCollation
(com.mongodb.client.model.Collation collation) Define the collation used for this query.<T extends Entity>
PanacheQuery<T>withReadPreference
(com.mongodb.ReadPreference readPreference) Define the read preference used for this query.
-
Method Details
-
project
Defines a projection class: the getters, and the public fields, will be used to restrict which fields should be retrieved from the database.- Returns:
- a new query with the same state as the previous one (params, page, range, ...).
-
page
Sets the current page.- Parameters:
page
- the new page- Returns:
- this query, modified
- See Also:
-
page
Sets the current page.- Parameters:
pageIndex
- the page index (0-based)pageSize
- the page size- Returns:
- this query, modified
- See Also:
-
nextPage
Sets the current page to the next page- Returns:
- this query, modified
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
previousPage
Sets the current page to the previous page (or the first page if there is no previous page)- Returns:
- this query, modified
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
firstPage
Sets the current page to the first page- Returns:
- this query, modified
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
lastPage
Sets the current page to the last page. This will cause reading of the entity count.- Returns:
- this query, modified
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
hasNextPage
boolean hasNextPage()Returns true if there is another page to read after the current one. This will cause reading of the entity count.- Returns:
- true if there is another page to read
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
hasPreviousPage
boolean hasPreviousPage()Returns true if there is a page to read before the current one.- Returns:
- true if there is a previous page to read
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
pageCount
int pageCount()Returns the total number of pages to be read using the current page size. This will cause reading of the entity count.- Returns:
- the total number of pages to be read using the current page size.
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set
-
page
Page page()Returns the current page.- Returns:
- the current page
- Throws:
UnsupportedOperationException
- if a page hasn't been set or if a range is already set- See Also:
-
range
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.- Parameters:
startIndex
- the index of the first element, starting at 0lastIndex
- the index of the last element- Returns:
- this query, modified
-
withCollation
Define the collation used for this query.- Parameters:
collation
- the collation to be used for this query.- Returns:
- this query, modified
-
withReadPreference
Define the read preference used for this query.- Parameters:
readPreference
- the read preference to be used for this query.- Returns:
- this query, modified
-
withBatchSize
Define the batch size for this query.- Parameters:
batchSize
- the batch size to be used for this query.- Returns:
- this query, modified
-
count
long count()Reads and caches the total number of entities this query operates on. This causes a database query withSELECT COUNT(*)
and a query equivalent to the current query, minus ordering.- Returns:
- the total number of entities this query operates on, cached.
-
list
Returns the current page of results as aList
.- Returns:
- the current page of results as a
List
. - See Also:
-
stream
Returns the current page of results as aStream
.- Returns:
- the current page of results as a
Stream
. - See Also:
-
firstResult
Returns the first result of the current page index. This ignores the current page size to fetch a single result.- Returns:
- the first result of the current page index, or null if there are no results.
- See Also:
-
firstResultOptional
Returns the first result of the current page index. This ignores the current page size to fetch a single result.- Returns:
- if found, an optional containing the entity, else
Optional.empty()
. - See Also:
-
singleResult
Executes this query for the current page and return a single result.- Returns:
- the single result
- Throws:
PanacheQueryException
- if there is not exactly one result.- See Also:
-
singleResultOptional
Executes this query for the current page and return a single result.- Returns:
- if found, an optional containing the entity, else
Optional.empty()
. - Throws:
PanacheQueryException
- if there is more than one result.- See Also:
-