关于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 群随时交流、讨论,也非常感谢同学的支持!

1
0

慕哥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。我的理解对吗?

0
1
张勤一
左边等于2,右边等于3,怎么可能会相等呢?
2020-03-17
共1条回复

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2136 学习 · 927 问题

查看课程