在spring数据接口中有以下方法:
List<TransactRepViewModel> findByClientIdInAndClDateBetween(List<String> clientIdList, Date startDate, Date endDate)问题是,由于我的clientIdList中有大约500-20000个字符串对象,所以我得到了这个错误:
ORA-01795: maximum number of expressions in a list is 1000是否有一种方法可以在一个spring数据查询中使用多个IN并拆分我的列表以避免错误?
更新
这就是我如何获得我的客户对象列表:
List<ClieTabModel> clieTabModelList = clieTabModelRepository.findByCompanyId(companyViewModel.getId());我就是这样得到客户Id列表的:
List<String> clientIdList = new ArrayList <>();
for (ClieTabModel clieTabModel : clieTabModelList) {
clientIdList.add(clieTabModel.getClientId());
}发布于 2016-11-07 07:26:44
您可以使用以下查询:
@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)发布于 2016-11-07 07:58:20
正如我所看到的,ER模型应该如下所示:Transact >--- Client >--- Company。
因此,在本例中,您可以编写以下查询:
List<TransactRepViewModel> findByClientCompanyIdAndClDateBetween(String companyId, Date startDate, Date endDate)
https://stackoverflow.com/questions/40459795
复制相似问题