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

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

如何在一對(duì)多關(guān)系彈簧靴中向多邊添加值

如何在一對(duì)多關(guān)系彈簧靴中向多邊添加值

牧羊人nacy 2022-09-28 16:26:27
我有商家和地址表。一個(gè)商家可以有多個(gè)地址,一個(gè)地址有一個(gè)商家(一對(duì)多關(guān)系)。當(dāng)用地址添加商家價(jià)值時(shí),我收到此錯(cuò)誤。如何解決此錯(cuò)誤?這是錯(cuò)誤。{    "timestamp": 1554878673504,    "status": 500,    "error": "Internal Server Error",    "message": "could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement",    "path": "/merchant-service/save-merchant"}這是我的輸入值: {        "idNo": null,        "idType": null,        "emailId": "email@gmail.com",        "name": null,        "status": true,        "createdBy": null,        "modifiedBy": null,        "createdDate": null,        "modifiedDate": null,        "contacts": [            {"contactNo": "0766601122"}],        "addresses": [            {"line1": "manipay"},            {"line1": "suthumalai"}            ]    }這是我在商家模型中的代碼: @OneToMany(fetch = FetchType.LAZY,cascade = {CascadeType.ALL}, mappedBy = "merchant")    private Set<Address> addresses = new HashSet<Address>(            0);這是我在地址模型中的代碼: @ManyToOne(fetch = FetchType.LAZY)    @JoinColumn(name = "merchant_id", nullable = false)//    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})//    @Getter(onMethod = @__( @JsonIgnore))//    @Setter    private Merchant merchant;這是我的服務(wù):public Merchant saveMerchant(Merchant merchant) {       merchant = merchantRepository.save(merchant);       return merchant;    }
查看完整描述

2 回答

?
森欄

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

我是你的商家模型,你為地址屬性設(shè)置的。這意味著在這種情況下,如果您想保留具有某些地址的 Merchant 對(duì)象,休眠將檢查這些地址是否已存在;如果沒(méi)有,它將在之前創(chuàng)建它們。但在地址模型中,您設(shè)置為商家屬性,這意味著如果沒(méi)有現(xiàn)有商家,則無(wú)法保留地址對(duì)象。然后,當(dāng)休眠者嘗試持久化商家并找到尚未持久化的地址時(shí),它會(huì)嘗試在此之前持久化此地址,它還會(huì)找到一個(gè)空 Merchant 對(duì)象,然后引發(fā)此異常。cascade = {CascadeType.ALL}nullabel = falseorg.hibernate.exception.ConstraintViolationException

您必須選擇以下建議之一:

  • 刪除地址模型上商家屬性中的約束。如果您這樣做,地址將保留在沒(méi)有商家的情況下。然后,當(dāng)您堅(jiān)持時(shí),商家休眠將更新地址。nullable = false

  • 更改為除“商家模型的 PERSIST 地址”屬性之外的所有其他級(jí)聯(lián)。如果您這樣做,您應(yīng)該在自己之前保留商家,然后將地址保留在現(xiàn)有商家中。cascade = {CascadeType.ALL}


查看完整回答
反對(duì) 回復(fù) 2022-09-28
?
POPMUISE

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

在“商品”表中:

  @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}, mappedBy = "merchant")
    private Set<Address> addresses = new HashSet<Address>(            0);

在地址表中:

 @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "merchant_id")
        @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
        @Getter(onMethod = @__( @JsonIgnore))
        @Setter
        private Merchant merchant;

使用中:

public Merchant saveMerchant(Merchant merchant) {
       merchant = merchantRepository.save(merchant);     
          Merchant finalMerchant = merchant;
        merchant.getAddresses().forEach(address -> {
           address.setMerchant(finalMerchant);
           addressRepository.save(address);
       });       return merchant;
    }

它完美地工作。


查看完整回答
反對(duì) 回復(fù) 2022-09-28
  • 2 回答
  • 0 關(guān)注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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