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)确实解决了问题。
添加回答
举报