You are currently browsing legacy 4.1 version of documentation. Click here to switch to the newest 5.1 version.
Session: Querying: How to Stream Query Results
Query results can be streamed using the stream
method from the advanced
session operations. The query can be issued using either a static index, or it can be a dynamic one where it will be handled by an auto index.
Syntax
<T> CloseableIterator<StreamResult<T>> stream(IDocumentQuery<T> query);
<T> CloseableIterator<StreamResult<T>> stream(IDocumentQuery<T> query, Reference<StreamQueryStatistics> streamQueryStats);
<T> CloseableIterator<StreamResult<T>> stream(IRawDocumentQuery<T> query);
<T> CloseableIterator<StreamResult<T>> stream(IRawDocumentQuery<T> query, Reference<StreamQueryStatistics> streamQueryStats);
Parameters | ||
---|---|---|
query | IDocumentQuery or IRawDocumentQuery | Query to stream results for. |
Reference streamQueryStats |
StreamQueryStatistics | Information about performed query. |
Return Value | |
---|---|
CloseableIterator |
Iterator with entities. |
Example I - Using Static Index
IDocumentQuery<Employee> query = session
.query(Employee.class, Employees_ByFirstName.class)
.whereEquals("FirstName", "Robert");
CloseableIterator<StreamResult<Employee>> results = session.advanced().stream(query);
while (results.hasNext()) {
StreamResult<Employee> employee = results.next();
}
Example II - Dynamic Document Query
IDocumentQuery<Employee> query = session
.advanced()
.documentQuery(Employee.class)
.whereEquals("FirstName", "Robert");
Reference<StreamQueryStatistics> streamQueryStatsRef = new Reference<>();
CloseableIterator<StreamResult<Employee>> results = session.advanced().stream(query, streamQueryStatsRef);
while (results.hasNext()) {
StreamResult<Employee> employee = results.next();
}
Example III - Dynamic Raw Query
IRawDocumentQuery<Employee> query = session.advanced()
.rawQuery(Employee.class, "from Employees where FirstName = 'Robert'");
CloseableIterator<StreamResult<Employee>> results = session.advanced().stream(query);
while (results.hasNext()) {
StreamResult<Employee> employee = results.next();
}