Spring Data JPA使用集合进行延迟抓取

时间:2016-01-16 23:32:37

标签: java spring hibernate jpa spring-data

我有一个带有Set cars的用户实体(oneToMany)。我也有一个方法:

@Transactional(readOnly = true)
public Optional<User> getUserWithCars(Long id) {
    return userRepository.findOneById(id).map(u -> {
        u.getCars().size();
        return u;
    });
}

懒惰抓取工作正常。但是,如果我必须用汽车获取一组用户呢?我尝试使用 users.forEach(u - &gt; u.getCars()。size()); 但收到了一个流行的无会话例外。

P.S。我需要懒惰的获取,而不是渴望。

2 个答案:

答案 0 :(得分:0)

在存储库中:

@Query("SELECT u FROM User u LEFT JOIN FETCH u.cars")
public Set<User> getUserWithCars()

答案 1 :(得分:0)

在spring数据jpa中你可以编写查询方法

Optional<User> findFirstWithCarsById(Long id);

了解更多信息,请查看documentation