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]
我有一个 '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]