加入spring数据查询存储库


@Query("select u from User u join u.favoriteRestos s where u.id = ?1 ")
User findByIdWithFavoriteRestos (Long userId);

在我的仓库中有这个查询,但是不是返回一个带有空favoriteRestos集合的User,而是返回一个空User

返回空用户:

@Query("select u from User u join fetch u.favoriteRestos s where u.id = ?1 ")
User findByIdWithFavoriteRestos (Long userId);

我还试过:

@Query("select u from User u left join u.favoriteRestos s where u.id = ?1 ")
User findByIdWithFavoriteRestos (Long userId);

它没有找到任何用户,因为join是一个内部连接。您需要添加left关键字:

@Query("select u from User u left join fetch u.favoriteRestos s where u.id = ?1 ")
User findByIdWithFavoriteRestos (Long userId);

注::fetch也是需要的,如果你有一个默认的(惰性)对多映射,如果你想填充集合。

最新更新