首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring数据:查询中的多个IN

Spring数据:查询中的多个IN
EN

Stack Overflow用户
提问于 2016-11-07 07:23:24
回答 2查看 415关注 0票数 0

在spring数据接口中有以下方法:

代码语言:javascript
复制
List<TransactRepViewModel> findByClientIdInAndClDateBetween(List<String> clientIdList, Date startDate, Date endDate)

问题是,由于我的clientIdList中有大约500-20000个字符串对象,所以我得到了这个错误:

代码语言:javascript
复制
ORA-01795: maximum number of expressions in a list is 1000

是否有一种方法可以在一个spring数据查询中使用多个IN并拆分我的列表以避免错误?

更新

这就是我如何获得我的客户对象列表:

代码语言:javascript
复制
List<ClieTabModel> clieTabModelList = clieTabModelRepository.findByCompanyId(companyViewModel.getId());

我就是这样得到客户Id列表的:

代码语言:javascript
复制
List<String> clientIdList = new ArrayList <>();
            for (ClieTabModel clieTabModel : clieTabModelList) {
                clientIdList.add(clieTabModel.getClientId());
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-07 07:26:44

您可以使用以下查询:

代码语言:javascript
复制
@Query("select u from User u where u.id in :clientIds and :startDate=? and endDate= :endDate")
List<TransactRepViewModel> findByClientIdInAndClDateBetween(Set<String> clientIds, Date startDate, Date endDate)
票数 0
EN

Stack Overflow用户

发布于 2016-11-07 07:58:20

正如我所看到的,ER模型应该如下所示:Transact >--- Client >--- Company

因此,在本例中,您可以编写以下查询:

List<TransactRepViewModel> findByClientCompanyIdAndClDateBetween(String companyId, Date startDate, Date endDate)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40459795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档