JPA或JPQL如何从多对多关系返回单行

时间:2018-01-13 02:17:34

标签: sql jpa many-to-many jpql

学习JPA和JPQL。我有3个数据库表(例如):TVShow和Genre,以及一个连接表show_genre(只有show_id和genre_id),用于tvShow和流派之间的多对多关系。

我有2个带注释的Java实体: Genre.java:

  @JsonManagedReference(value="showToGenre")
  @ManyToMany(mappedBy="genres", fetch=FetchType.EAGER)
  private Set<TVShow> tvShows;

和TVShow.java

@JsonBackReference(value="showToGenre")
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="show_genre",     
        joinColumns=@JoinColumn(name="show_id"),   
        inverseJoinColumns=@JoinColumn(name="genre_id")  
)
private Set<Genre> genres;

是否有JPA或JPQL方法可以在此多对多中找到特定行,例如给定一个流派ID和一个tvShow id,我可以找到给定tvShow id的特定流派对象吗?

1 个答案:

答案 0 :(得分:1)

em.createQuery("Select s from show join show.genres g where g.id = :genreId")
.setParameter("genreId", id)
.setMaxResults(1)
.setFirstResult(0)
.getResultList().get(0)