【问题标题】:Get data using spring repository when relation one to many一对多关系时使用spring存储库获取数据
【发布时间】:2019-10-11 19:21:33
【问题描述】:

所以我有两个类 Movie 和 Genres 是一对多的关系。我想要做的是使用 Spring 存储库获取按流派名称过滤的电影列表。 我希望能够做类似的事情:

List<Movie> movies = movieRepository.getMoviesByGenres(Arrays.asList("Drama", "Comedy"))

我想像下面那样做,但这不是 wokrs,有没有使用 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);
}

【问题讨论】:

    标签: java hibernate spring-boot spring-data-jpa one-to-many


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2018-01-13
      • 2020-11-28
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多