JPA: Unir los resultados de Fetch a NULL en muchos lados vacíos

Tengo una relación de uno a muchos entre Usuario y GameMap. Un usuario puede tener muchos mapas.

Clase de usuario:

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

Sin embargo, a veces necesito cargar ansiosamente los mapas. Para evitar elLazyInitializationException después de cerrar la sesión, tengo dos variantes para recuperar usuarios.

Repositorio de usuario:

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:
Sin embargo, la variante JPQL JOIN FETCH para cargar ansiosamente de una vez el usuario y sus mapas devuelven un usuario NULLsi no hay mapas para este usuario en la tabla.

Pregunta:
¿Cómo puedo reescribir la declaración JPQL para recuperar al usuario y opcionalmente (!) Todos sus mapas, pero si no hay mapas, está bien, pero no devuelva un usuario NULL.

Respuestas a la pregunta(1)

Su respuesta a la pregunta