一尘不染

spring jpa创建双括号查询

spring-boot

我使用Spring引导与JPA(EclipseLink的)和Oracle 11.我有CrudRepository接口:

public interface TransportDefRepository extends CrudRepository<TransportDef, Long> {
    public List<TransportDef> findByNameInOrderByNameAsc(List<String> names);
}

调用findByNameInOrderByNameAsc 方法创建查询:

SELECT ID, NAME,
FROM TRANSPORT_DEFS WHERE (NAME IN (('A','B'))) ORDER BY NAME ASC

甲骨文抛出异常:

ORA-00907: missing right parenthesis

难道我做错了什么?为什么在生成的查询中有双括号?


阅读 751

收藏
2020-05-30

共1个答案

一尘不染

我的解决方案:

@Query("select t from TransportDef t where t.name in ?1 order by t.name asc")
public List<TransportDef> findByNameInOrderByNameAsc(List<String> names);

使用@Query注释,eclipselink创建查询:

SELECT ... FROM TRANSPORT_DEFS WHERE (NAME IN (?,?,?)) ORDER BY NAME ASC

这只是解决方法-我不知道为什么Spring Data JPA在没有此注释的情况下会生成无效查询…

2020-05-30