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。
添加回答
舉報