Spring JPA联接和查询存储库

时间:2019-12-23 05:06:36

标签: mysql spring spring-boot spring-data-jpa spring-data

我有User这样的课程:

{
     ...
     Long userID;
     ...     
     List<UserMovieRole> userMovieRoles=...
}

像这样的电影课:

{
    ...
    Long movieID; 
    ...     
    List<UserMovieRole> userMovieRoles=...
}

我还有另一个此类的UserMovieRole类:

{
    Long userMovieRoleID;
    Role role;
    ...
    User user;
    ...
    Movie movie;
}

现在,我想在UserMovieRole上进行查询,并选择给出用户ID和movieID的位置。

在sql中,我可以简单地编写代码,也可以简单地编写联接和sql选择位置。

但是在spring boot jpa查询中,看来我做不到,该怎么办?

这是我尝试过的:

  • @Query("select umr from UserMovieRole umr where umr.user.userID=?1 and umr.movie.movieID=?2")
  • @Query("select umrj from UserMovieRole.user full join UserMovieRole.movie umrj where umrj.userID=?1 and umrj.movieID=?2")

我不知道其中任何一个是否正确,实际的作法是什么?

1 个答案:

答案 0 :(得分:0)

像在SQL中@Query中编写查询一样,然后添加注释的另一个属性为nativeQuery = true,它将像在SQL中一样运行查询。

通过在查询前面添加:来传递查询中的参数。另外,不要忘记在自己的报价中添加@Param

类似这样的东西:

    @Query(value = "select umr from UserMovieRole umr join user u on u.id = umr.userId  where u.userId (#got it by joining tables.) = :userId  and umr.movieID=:movieId", nativeQuery = true)
    returnType yourMethod(@Param("userId") userId, @Param("movieId") movieId);