关于AdUnitServiceImpl中isRelatedCreativeExist的问题
来源:5-19 创意与推广单元关联服务功能实现

慕哥3156158
2020-03-17
private boolean isRelatedCreativeExist(List<Long> creativeIds) {
if (CollectionUtils.isEmpty(creativeIds)) {
return false;
}
return creativeRepository.findAllById(creativeIds).size() == new HashSet<>(creativeIds).size();
}
这个方法的返回值为什么不能用下面这个值代替:
return creativeIds.sized() == new HashSet<>(creativeIds).size();
写回答
2回答
-
张勤一
2020-03-17
同学你好:
我需要先确保传递进来的 creativeId 一定出现在数据库表里面。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
10 -
慕哥3156158
提问者
2020-03-17
那比如creativeIds={1, 2, 2, 4};
return creativeRepository.findAllById(creativeIds).size() == new HashSet<>(creativeIds).size();
creativeId = 4是不在数据库中的,creativeId=1和2都是在数据库中的,按照代码中的return的返回值,左边应该等于3,右边也会等于3,isRelatedCreativeExist方法的返回值是true,在createCreativeUnit方法中能创建creativeUnits,但creativeIds中包含不在数据库中的creativeId,这会有问题的。实际上,只有creativeIds中的所有元素都在数据库中并且没有重复时,那么才能批量创建creativeUnit。我的理解对吗?
012020-03-17
相似问题