@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 пользователя.

Ответы на вопрос(1)

Ваш ответ на вопрос