我有一个简单的本地查询:
SELECT DISTINCT
*
FROM
permission p
WHERE
p.USER_ID = ?
OR p.ROLE_ID IN (SELECT
r.id
FROM
user u
JOIN
role r ON u.ID = r.USER_ID
WHERE
r.ROLE_TYPE_ID = ?)
我想把这个查询转换成一个命名查询(JPQL),如下所示:
SELECT p
FROM Permission p
WHERE p.user =:user OR p.role IN p.user.roles
但问题是这不起作用:我不能这样使用IN
。如何解决这个问题有什么建议或想法吗?
非常感谢!
致问候,
JB
基本上,您需要像在JPA First中一样翻译本地查询。请参阅以下示例。
SELECT p FROM Permission p
WHERE
p.user =:user
OR
p.role IN (
SELECT r from User as u JOIN u.roles as r where r.roleTypeId = :roleTypeId
)
现在根据您的要求添加/修改条件。
注意:如果答案对您有帮助,请接受它