Skip to content

CloseableIterator errornously listed a supported repository return type #2835

Closed
@sergey-morenets

Description

@sergey-morenets

Hi

According to Spring Data JPA reference documentation query methods can return List, Stream, Streamable or CloseableIterator.
The first three types are handled correctly but the fourth type raises an error.

We created repository:

public interface ProductRepository extends 
		JpaRepository<Product, Integer>, JpaSpecificationExecutor<Product> {
	
	CloseableIterator<Product> findByPrice(double price);

And while trying to fetch the entities:

		CloseableIterator<Product> iterator = 
				productRepository.findByPrice(20);
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}

we receive an exception:

Caused by: jakarta.persistence.NonUniqueResultException: query did not return a unique result: 20
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:128)
	at org.hibernate.query.spi.AbstractSelectionQuery.getSingleResult(AbstractSelectionQuery.java:482)
	at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:223)
	at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92)
	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:148)
	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:136)

Spring Data JPA 3.1.0

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions