hibernate 在字符串集合中按值搜索

nlejzf6q  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(95)

我必须找到我在列表中传递的演员合作过的所有电影,问题是它返回列表中每个演员合作过的所有电影,甚至是单独合作过的电影
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);

这是我的查询

mwg9r5ms

mwg9r5ms1#

实际上,您的查询返回了至少涉及一个演员的电影。如果您确定film-actor关系中没有重复(一个演员在一部电影中不会被提及两次),则可以创建一个子请求,对这些关系进行计数,并测试计数是否等于名称列表计数。请检查以下示例:Hibernate: Select entities where collection contains all of the specified valus

相关问题