Spring Data IN 子句添加额外的括号

Spring Data IN clause adds additional brackets

我有一个 'Role' table 和 'name' 列。我需要获取名称为 'role1' 或 'role2' 的所有角色。角色存储库方法如下所示:

Set<Role> findByNameIsIn(Set<String> roleNames);

我的数据库只包含 'role1'。生成的请求如下所示:

SELECT ID, NAME FROM ROLE WHERE (NAME IN ((?,?)))
    bind => [role1, role2]

请注意参数周围的双括号。结果集为空。当我通过 h2 控制台手动尝试此查询时 - 也没有结果。以下查询有效:

SELECT ID, NAME FROM ROLE WHERE (NAME IN ('role1', 'role2'))

我的集合恰好包含两个元素。应支持集合作为参数类型。参见:https://dzone.com/refcardz/core-spring-data

最后的问题是:我错过了什么?

Oliver Gierke 所述 - 在 EclipseLink(这是我用作持久性提供程序)问题跟踪器中针对此问题打开了一个错误。自 2011 年以来!..这是解决方法:

@Query("select r from Role r  where r.name in ?1")
Set<Role> findByNameIsIn(Set<String> roleNames);

这里是生成的有效查询:

SELECT ID, NAME FROM ROLE WHERE (NAME IN (?,?))
    bind => [role1, role2]