我正在嘗試將以下 SQL 查詢轉(zhuǎn)換為 JPQL 查詢:SELECT *FROM movie m INNER JOIN movie_genre mg ON m.id = mg.movie_idWHERE mg.genre_id = (SELECT mg2.genre_id FROM movie_genre mg2 WHERE mg2.movie_id = ?1 AND mg2.movie_id <> mg.movie_id AND mg.genre_id = mg2.genre_id)GROUP BY mg.movie_id ORDER BY count(*) DESC問題是我沒有模型類來表示movie_genre 表,因?yàn)樗菑腗anyToMany關(guān)系自動(dòng)生成的表。那么有什么方法可以將該查詢轉(zhuǎn)換為 JPQL目前我正在使用本機(jī)查詢:@Query(value = "SELECT * FROM movie m INNER JOIN movie_genre mg ON m.id = mg.movie_id " + "WHERE mg.genre_id = (SELECT mg2.genre_id FROM movie_genre mg2 WHERE mg2.movie_id = ?1 AND mg2.movie_id <> mg.movie_id AND mg.genre_id = mg2.genre_id) " + "GROUP BY mg.movie_id ORDER BY count(*) DESC", nativeQuery = true)Page<Movie> findRelatedMoviesToAMovieById(@Param("id") int id, Pageable pageable);編輯:這是模型:電影@Entitypublic class Movie extends DateAudit { private Long id; private String name; @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) @JoinTable(name = "movie_genre", joinColumns = @JoinColumn(name = "movie_id"), inverseJoinColumns = @JoinColumn(name = "genre_id") ) private List<Genre> genres = new ArrayList<>();}類型@Entitypublic class Genre { private Long id; private String name; @ManyToMany(mappedBy = "genres", cascade = {CascadeType.PERSIST, CascadeType.MERGE}) private Set<Movie> movies = new HashSet<>();}
添加回答
舉報(bào)
0/150
提交
取消