spring jpa 创建双括号查询
spring jpa create double parenthesis query
我正在使用 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
Oracle 抛出异常:
ORA-00907: missing right parenthesis
我是不是做错了什么?
为什么生成的查询中有双括号?
我不太确定是否需要您传递一个列表以便从您的 table 查询,但如果我是您,我会以不同的方式编码。
1.Instead 将列表作为参数传递我将传递参数。并做
在服务层上列出名称迭代,并且仍然 return 从您的存储库中列出。所以我在我的仓库中的代码如下
@Query("SELECT t FROM TRANSPORT_DEFS t WHERE t.name = :name)
List<TransportDef> findByNameInOrderByNameAsc(@Param("name") String name);
这会奏效,您只需要调整您的服务逻辑即可。
我的解决方案:
@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 在没有此注释的情况下生成无效查询...
我正在使用 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
Oracle 抛出异常:
ORA-00907: missing right parenthesis
我是不是做错了什么? 为什么生成的查询中有双括号?
我不太确定是否需要您传递一个列表以便从您的 table 查询,但如果我是您,我会以不同的方式编码。
1.Instead 将列表作为参数传递我将传递参数。并做 在服务层上列出名称迭代,并且仍然 return 从您的存储库中列出。所以我在我的仓库中的代码如下
@Query("SELECT t FROM TRANSPORT_DEFS t WHERE t.name = :name)
List<TransportDef> findByNameInOrderByNameAsc(@Param("name") String name);
这会奏效,您只需要调整您的服务逻辑即可。
我的解决方案:
@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 在没有此注释的情况下生成无效查询...