JPA IN子句为一对多关系

时间:2016-06-03 13:01:22

标签: java jpa eclipselink

我有以下jpa实体:

Music_playlist[

    Integer music_id;

    Integer playlist_id;

    List<Genre> genres;
]

Genre[
    Integer genre_id;
]

我想知道我是否可以创建一个命名查询来检索 music_playlist 实体,这些实体的类型属性包含一个类型对象,其中 genre_id 等于命名PARAM。像这样:

SELECT mp FROM music_playlist WHERE :genreId in mp.genres.genre_id

2 个答案:

答案 0 :(得分:2)

另一种解决方案可能是:

SELECT mp FROM music_playlist mp JOIN mp.genres g WHERE :genreId = g.genreId

答案 1 :(得分:1)

您可以使用任何

 FROM MusicPlaylist mp WHERE 'Rock' = ANY (SELECT g.genreId FROM mp.genres g)