JPA或JPQL如何return单行多对多关系
JPA or JPQL how to return single row from a many to many relationship
学习 JPA 和 JPQL。我有 3 个数据库 tables(例如):TVShow 和 Genre,还有一个 Join table 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 的特定流派对象吗?
em.createQuery("Select s from show join show.genres g where g.id = :genreId")
.setParameter("genreId", id)
.setMaxResults(1)
.setFirstResult(0)
.getResultList().get(0)
学习 JPA 和 JPQL。我有 3 个数据库 tables(例如):TVShow 和 Genre,还有一个 Join table 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 的特定流派对象吗?
em.createQuery("Select s from show join show.genres g where g.id = :genreId")
.setParameter("genreId", id)
.setMaxResults(1)
.setFirstResult(0)
.getResultList().get(0)