3 回答
TA贡献1777条经验 获得超10个赞
你可以尝试类似的东西
private boolean isComputerProducerAlreadyExist(ComputerProducer computerProducer){
return this.getAllComputerProducers()
.map((List<ComputerProducer> computerProducers) -> computerProducers.stream()
.anyMatch(producer -> producer.getProducerName().equalsIgnoreCase(computerProducer.getProducerName())))
.orElse(Boolean.FALSE);
}
或者不是加载所有计算机生产商,而是只加载使用其名称的计算机。
private boolean isComputerProducerAlreadyExist(ComputerProducer computerProducer){
return computerProducerRepository.findByName(computerProducer.getProducerName()).isEmpty();
}
据我所知,Spring 还支持存储库的“存在”方法,甚至不需要加载实体。
TA贡献2036条经验 获得超8个赞
以下应该工作
Predicate<ComputerProducer> cpPredicate = producer -> producer.getProducerName()
.equalsIgnoreCase(computerProducer.getProducerName());
boolean compProdExists = getAllCimputerProducers()
.map(list -> list.stream()
.filter(cpPredicate)
.findFirst()))
.isPresent();
TA贡献1943条经验 获得超7个赞
您可以将 传递computerProducer.getProducerName()
给存储库以获取现有记录。方法名称将为 ' findByProducerName(String producerName)
',如果 producerName 具有唯一约束,则返回类型将为Optional<ComputerProducer>
, else Optional<List<ComputerProducer>>
。但是,JPA 返回空列表而不是 null,因此不需要 optional on list。
添加回答
举报