JPA: Associe resultados da busca a NULL no lado muitos vazio

Eu tenho uma relação de um para muitos entre Usuário e GameMap. Um usuário pode ter muitos mapas.

Classe de usuário:

// LAZY LOADED
@OneToMany(cascade = CascadeType.ALL, mappedBy = "creater")
private final List<GameMap> maps = new ArrayList<>();

No entanto, às vezes eu preciso carregar com entusiasmo os mapas. Para evitar oLazyInitializationException depois de encerrar a sessão, tenho duas variantes para recuperar usuários.

Repositório do Usuário:

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 );
}

Problema:
No entanto, a variante JPQL JOIN FETCH para carregar rapidamente de uma só vez o usuário e seus mapas retornam um usuário NULLse não houver mapas para esse usuário na tabela.

Pergunta, questão:
Como posso reescrever a instrução JPQL para recuperar o usuário e, opcionalmente (!) Todos os seus mapas, mas se não houver mapas, tudo bem, mas não retorne um usuário NULL.

questionAnswers(1)

yourAnswerToTheQuestion