我必须找到我在列表中传递的演员合作过的所有电影,问题是它返回列表中每个演员合作过的所有电影,甚至是单独合作过的电影
IN子句似乎不起作用,我哪里错了?
@Query(value = "SELECT new it.package.Project.payload.response.FilmResponse(" +
"fs.filmStaffId.film.filmId, " +
"fs.filmStaffId.film.title, " +
"fs.filmStaffId.film.description, " +
"fs.filmStaffId.film.releaseYear, " +
"fs.filmStaffId.film.languageId.languageName) " +
"FROM FilmStaff fs " +
"LEFT JOIN Staff s " +
"ON fs.filmStaffId.staff = s.staffId " +
"WHERE fs.filmStaffId.staff.lastName IN :lastNames AND fs.filmStaffId.role.roleName = 'ACTOR'")
List<FilmResponse> getByActors(@Param("lastNames") Collection lastNames);
这是我的查询
1条答案
按热度按时间mwg9r5ms1#
实际上,您的查询返回了至少涉及一个演员的电影。如果您确定film-actor关系中没有重复(一个演员在一部电影中不会被提及两次),则可以创建一个子请求,对这些关系进行计数,并测试计数是否等于名称列表计数。请检查以下示例:Hibernate: Select entities where collection contains all of the specified valus。