第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

byte[] 設(shè)置為 null 后未為 null

byte[] 設(shè)置為 null 后未為 null

長(zhǎng)風(fēng)秋雁 2022-10-20 15:06:35
我有一個(gè) Hibernate 5.2.17.Final 和 Java 8 和 MariaDB 的項(xiàng)目。我的實(shí)體有一個(gè)byte[]字段,我將文件保存到數(shù)據(jù)庫中。在我使用該字段將文件發(fā)送到 S3 后,我想刪除其內(nèi)容(將其設(shè)置為 null),然后將該字段設(shè)置為null.我需要將該列保留在數(shù)據(jù)庫中,因?yàn)檫@是一次升級(jí),并且該列的條目具有非空值。我試過的:// first this:invoiceDTO.setPdf(null);// as the value of "PDF" is already null, invoice will have it also nullInvoice invoice = invoiceFaMapper.toEntity(invoiceDTO);invoice = invoiceFaRepository.save(invoice);調(diào)試時(shí)該字段為空,但數(shù)據(jù)庫中的值不為空。// then I tried this:byte[] pdf = null;invoice.setPdf(pdf);這也給我在數(shù)據(jù)庫中留下了一個(gè)非空值,同樣,在調(diào)試時(shí)invoice有一個(gè)非空值。// last thing I tried was:invoice.setPdf("".getBytes());同樣,它不是空的。我錯(cuò)過了什么?
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

將對(duì)象保存到數(shù)據(jù)庫后,我重定向到該對(duì)象。由于發(fā)票有很多行,我查詢 que invoice 及其行


Optional<InvoiceDTO> invoiceDTO = invoiceService.findOneWithLines(id);

在那個(gè)方法里面我有這樣的東西:


    @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);

    }

問題是我在括號(hào)內(nèi)所做的任何事情都會(huì)存儲(chǔ)在數(shù)據(jù)庫中,我不知道為什么(我沒有調(diào)用存儲(chǔ)庫,那為什么會(huì)保存呢?)。


我通過編輯i.ifPresent(invoice -> {行外的字段解決了這個(gè)問題。


編輯:Service該類被注釋@Transactional,添加@Transactional(readOnly = true)確實(shí)解決了問題。


查看完整回答
反對(duì) 回復(fù) 2022-10-20
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)