JPA:将空的Fetch结果加入NULL空

我在User和GameMap之间有一对多的关系。 一个用户可以拥有许多地图。

用户类:

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

但是,有时我需要急于加载地图。 为了避免在关闭Session之后出现LazyInitializationException ,我有两种检索用户的变体。

用户存储库:

 public interface UserRepository extends JpaRepository { Optional 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用户。

 @Query("SELECT u FROM User u LEFT JOIN FETCH u.maps WHERE u.id = (:id)") public User findByIdEagerFetch( @Param("id") Long id );