【发布时间】:2021-11-18 11:40:17
【问题描述】:
我们想将字符串列表传递给名为本机查询的 JPA。我们如何实现这一点。它会抛出无效的查询参数异常。
【问题讨论】:
-
为什么是原生查询?处理列表需要修改 SQL 以添加每个列表元素的参数绑定,而不是 JPA 规范支持的内容。任何解决方案都将是特定于提供商的。 JPQL 查询虽然对集合参数有更广泛的支持。
-
我们有一个 JPQL 查询,其 ids 作为这样的列表,我们面临语法错误问题,因此尝试了原生查询。选择 r.city,case when r.name='test' then 'T' else 'N' end from testable r where r.id in (:ids) group by r.city,case when r.name='test'然后'T'否则'N'结束;。它在 group by 子句中抱怨 r.city 之后的逗号。
-
这可能是您应该发布的问题。该查询看起来无效 - 尝试为您的初始 case 语句起别名并在 order by 子句中使用它。
-
我之前发布过但没有得到任何回复,因此尝试使用本机查询。您能否更新此查询以使其正常工作(我已按照建议为 case 语句添加别名)选择 r.city ,case when r.name='test' then 'T' else 'N' end as opt from testable r where r.id in (:ids) group by r.city,case when r.name='test' then ' T' else 'N' end;
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: jpa orm jpql named-query