【发布时间】:2013-10-04 03:08:33
【问题描述】:
我有一个实体,以及接口JpaRepository<MyEntity, Long> 的DAO。使用 EclipseLink。
我正在使用 DAO 中的以下方法:
Iterable<MyEntity> findAll(Iterable<Long> ids);
这样:
List<Long> listOfIds = Arrays.asList(new Long[] {1,2,3});
Iterable<MyEntity> entities = dao.findAll(listOfIds);
我遇到了 MySQL 异常:
java.sql.SQLException: Operand should contain 1 column(s)
在数据库中执行的 SQL 查询语法如下:
SELECT id, creation_date, column1, column2 FROM my_entity WHERE (id IN ((1,2,3)))
问题出在最后的大括号中——它们太多了。工作查询是:
SELECT id, creation_date, column1, column2 FROM my_entity WHERE (id IN (1,2,3))
Spring Data 添加这些不必要的大括号的任何原因?有什么办法解决吗?
【问题讨论】:
-
请发
MyEntity类代码+listOfIds的声明 -
在编辑中提供了
listOfIds的示例声明。该实体是一个带有@Entity注释的POJO。 -
您使用哪个 OR 映射器?
-
@MatthiasHerlitzius 抱歉,我不知道你在问什么
-
那么您的问题可能与错误有关。请参阅此链接以及最后的错误报告链接:forum.spring.io/forum/spring-projects/data/…
标签: java mysql jpa spring-data-jpa