@tequilacat отчетливый специально для таких случаев
я есть отношения один-ко-многим между пользователем и GameMap. У одного пользователя может быть много карт.
Класс пользователя:
// LAZY LOADED
@OneToMany(cascade = CascadeType.ALL, mappedBy = "creater")
private final List<GameMap> maps = new ArrayList<>();
Однако иногда мне нужно загружать карты. Чтобы избежатьLazyInitializationException после закрытия сессии у меня есть два варианта получения пользователей.
Репозиторий пользователей:
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findById( Long id );
@Query("SELECT u FROM User u JOIN FETCH u.maps WHERE u.id = (:id)")
public User findByIdEagerFetch( @Param("id") Long id );
}
Проблема:
Однако вариант JPQL JOIN FETCH для быстрой загрузки пользователя за один раз, и его карты возвращают пользователя NULL.если в таблице нет карт этого пользователя.
Вопрос:
Как я могу переписать оператор JPQL для того, чтобы получить пользователя и, при желании (!), Все его карты, но если карт нет, то это нормально, но не возвращать NULL пользователя.