spring-data-jpa icon indicating copy to clipboard operation
spring-data-jpa copied to clipboard

SimpleJpaRepository.findAllById doesn't join eager fetched columns [DATAJPA-1721]

Open spring-projects-issues opened this issue 5 years ago • 1 comments
trafficstars

cda opened DATAJPA-1721 and commented

Using SimpleJpaRepository.findById(ID is) results in a query with left outer joins for each eager relationship.

Using SimpleJpaRepository.findAllById(Iterable<ID> ids) results in a query that fetches current entity columns and additional select queries for each eager relationship.

The performance of findAllById is affected by the additional select queries. Ideally it should generate the same query as findById but with id in () instead of id = .

  SimpleJpaRepository.findAllById(Iterable<ID> ids) is generating a JPQL query to fetch entities and reading Vlad Mihalcea article it seems that using JPQL to fetch entities uses a different fetching strategy than entitymanager.find that results in additional selects


No further details from DATAJPA-1721

spring-projects-issues avatar May 05 '20 17:05 spring-projects-issues

cda commented

Workaround with hibernate method works as expected. It generates a single query.

entityManager.unwrap( Session.class )
    .byMultipleIds( MyEntity.class )
    .multiLoad( ids )

spring-projects-issues avatar May 05 '20 17:05 spring-projects-issues