解决在oracle数据库环境下 小组权限更新 角色权限表因为in子句中表达式超过1000的报错的问题
This commit is contained in:
parent
27d8c31f3f
commit
7437cffd98
Binary file not shown.
@ -1149,8 +1149,33 @@ public class CoeCooperationAPIManager {
|
||||
}
|
||||
}
|
||||
if (deleteIds.size() > 0){
|
||||
// 删除不在小组权限范围内的数据
|
||||
rolePermDao.removeDataByTeamAndPalVersionIds(teamId, roleModel.getId(), deleteIds);
|
||||
if (deleteIds.size() <= 1000){ // 直接删除
|
||||
// 删除不在小组权限范围内的数据
|
||||
rolePermDao.removeDataByTeamAndPalVersionIds(teamId, roleModel.getId(), deleteIds);
|
||||
}else { // 分批次删除
|
||||
// 每个小集合的大小
|
||||
int batchSize = 1000;
|
||||
|
||||
// 计算需要拆分的次数
|
||||
int numBatches = (deleteIds.size() + batchSize - 1) / batchSize;
|
||||
|
||||
// 拆分成多个小集合
|
||||
List<Set<String>> batches = new ArrayList<>();
|
||||
Iterator<String> iterator = deleteIds.iterator();
|
||||
for (int i = 0; i < numBatches; i++) {
|
||||
Set<String> batch = new HashSet<>();
|
||||
for (int j = 0; j < batchSize && iterator.hasNext(); j++) {
|
||||
batch.add(iterator.next());
|
||||
}
|
||||
batches.add(batch);
|
||||
}
|
||||
|
||||
// 遍历小集合,进行相应的操作
|
||||
for (Set<String> batch : batches) {
|
||||
// 在这里执行你的操作,例如删除操作
|
||||
rolePermDao.removeDataByTeamAndPalVersionIds(teamId, roleModel.getId(), batch);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user