Can we call it #stream instead of #getResultStream? This would be more
consistent with other steaming calls in Java
On Thu, May 4, 2017, 4:40 PM Michael Nascimento <misterm_at_gmail.com> wrote:
> This change seems very valuable and welcome, for sure.
>
> Regards,
> Michael
>
>
> On Thu, May 4, 2017 at 5:01 PM, Lukas Jungmann <lukas.jungmann_at_oracle.com>
> wrote:
>
>> Hi,
>>
>> another change I'd like to propose is an addition of
>> getResultStream:Stream method to javax.persistence.Query/TypedQuery
>> interfaces with following javadoc and provided with default implementation:
>>
>> javax.persistence.Query:
>>
>> * /***
>> * * Execute a SELECT query and return the query results*
>> * * as an untyped <code>java.util.Stream</code>.*
>> * * By default this method delegates to
>> <code>getResultList().stream()</code>,*
>> * * however persistence provider may choose to override this method*
>> * * to provide additional capabilities.*
>> * **
>> * * @return a stream of the results*
>> * * @throws IllegalStateException if called for a Java*
>> * * Persistence query language UPDATE or DELETE statement*
>> * * @throws QueryTimeoutException if the query execution exceeds*
>> * * the query timeout value set and only the statement is*
>> * * rolled back*
>> * * @throws TransactionRequiredException if a lock mode other than*
>> * * <code>NONE</code> has been set and there is no
>> transaction*
>> * * or the persistence context has not been joined to the
>> transaction*
>> * * @throws PessimisticLockException if pessimistic locking*
>> * * fails and the transaction is rolled back*
>> * * @throws LockTimeoutException if pessimistic locking*
>> * * fails and only the statement is rolled back*
>> * * @throws PersistenceException if the query execution exceeds *
>> * * the query timeout value set and the transaction *
>> * * is rolled back *
>> * * @see Stream*
>> * * @see #getResultList()*
>> * * @since 2.2*
>> * */*
>> * default Stream getResultStream() {*
>> * return getResultList().stream();*
>> * }*
>>
>> similarly to javax.persistence.TypedQuery:
>>
>> * /***
>> * * Execute a SELECT query and return the query results*
>> * * as a typed <code>java.util.Stream</code>.*
>> * * By default this method delegates to
>> <code>getResultList().stream()</code>,*
>> * * however persistence provider may choose to override this method*
>> * * to provide additional capabilities.*
>> * **
>> * * @return a stream of the results*
>> * * @throws IllegalStateException if called for a Java*
>> * * Persistence query language UPDATE or DELETE statement*
>> * * @throws QueryTimeoutException if the query execution exceeds*
>> * * the query timeout value set and only the statement is*
>> * * rolled back*
>> * * @throws TransactionRequiredException if a lock mode other than*
>> * * <code>NONE</code> has been set and there is no
>> transaction*
>> * * or the persistence context has not been joined to the
>> transaction*
>> * * @throws PessimisticLockException if pessimistic locking*
>> * * fails and the transaction is rolled back*
>> * * @throws LockTimeoutException if pessimistic locking*
>> * * fails and only the statement is rolled back*
>> * * @throws PersistenceException if the query execution exceeds *
>> * * the query timeout value set and the transaction *
>> * * is rolled back *
>> * * @see Stream*
>> * * @see #getResultList()*
>> * * @since 2.2*
>> * */*
>> * default Stream<X> getResultStream() {*
>> * return getResultList().stream();*
>> * }*
>>
>> Do you think this is OK or does it give providers to big freedom?
>>
>> Thank you,
>> --lukas
>>
>
>