加入 spring 数据查询库

join in spring data query repository

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

O 在我的回购中有这个查询,但不是返回一个空的 favoriteRestos 集合的用户而是返回一个空用户

那个returns也是一个空用户:

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

P.S.: fetch 如果你有一个默认的(懒惰的)对多映射,如果你想填充集合,也需要 fetch