所以我有两个类别的电影和流派一对一关系。我想做的是使用Spring存储库按类型名称过滤电影列表。 我希望能够执行以下操作:
List<Movie> movies = movieRepository.getMoviesByGenres(Arrays.asList("Drama", "Comedy"))
我很想像下面那样做,但这不是很麻烦,是否有选择使用spring仓库来做到这一点?
@Entity
public class Movie {
@Id
@Column(name = "movie_id")
private long id;
private String title;
@OneToMany(mappedBy = "movie")
private Set<Genres> genres;
...
}
-
@Entity
public class Genres {
@Id
private long id;
@ManyToOne
@JoinColumn(name = "movie_id", nullable = false)
private Movie movie;
private String name;
...
}
-
public interface MovieRepository extends JpaRepository<Movie, Long>{
List<Movie> getMoviesByGenres(String name);
}
答案 0 :(得分:1)
您需要创建一个如下所示的方法:
public interface MovieRepository extends JpaRepository<Movie, Long>{
List<Movie> getMoviesByGenresNameIn(List<String> names);
}
如果您想通过一个查询获取geners
关系,则需要使用EntityGraph
装饰该方法,如下所示:
@EntityGraph(attributePaths={"geners"})
List<Movie> getMoviesByGenresNameIn(List<String> names);