1 回答

TA貢獻1818條經驗 獲得超7個贊
將對象保存到數據庫后,我重定向到該對象。由于發票有很多行,我查詢 que invoice 及其行
Optional<InvoiceDTO> invoiceDTO = invoiceService.findOneWithLines(id);
在那個方法里面我有這樣的東西:
@Override
public Optional<InvoiceFaDTO> findOneWithLines(long id) {
Optional<Invoice> i = invoiceFaRepository.findById(id);
i.ifPresent(invoice -> {
if (invoice.getAttachmentUrl() != null) {
invoice.setPdf(amazonService.downloadFile(invoice.getAttachmentUrl()).toByteArray());
}
});
return i.map(invoiceFaMapper::toDto);
}
問題是我在括號內所做的任何事情都會存儲在數據庫中,我不知道為什么(我沒有調用存儲庫,那為什么會保存呢?)。
我通過編輯i.ifPresent(invoice -> {行外的字段解決了這個問題。
編輯:Service該類被注釋@Transactional,添加@Transactional(readOnly = true)確實解決了問題。
添加回答
舉報