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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Spring Data JPA 更新實體中的集合字段?

如何使用 Spring Data JPA 更新實體中的集合字段?

瀟瀟雨雨 2022-11-02 17:26:31
假設我有兩個實體,它們的字段之間有 @ManyToMany 關系。第一個名為Pack的實體:@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})    @JoinTable(name = "card_in_pack",            joinColumns = {@JoinColumn(name = "pack_id")},            inverseJoinColumns = {@JoinColumn(name = "card_id")})    private Set<Card> cards = new HashSet<>();第二個叫Card:@ManyToMany(mappedBy = "cards")private Set<Pack> packs = new HashSet<>();我有一個控制器,我想在其中將新的 Card實體添加到Pack實體中的集合中,然后我想將其全部保存到我的數(shù)據(jù)庫中,當然還有關系。@PostMapping("/packs/{namePack}")    public String addCard(@Valid Card card, @PathVariable String namePack, @AuthenticationPrincipal User user) {            //Assume I got a Pack instance with name pack            card.setAuthor(user);            pack.addCard(card);            packRepo.save(pack);            return "pack";        }    }看起來每次我嘗試調(diào)用packRepo.save(pack)方法時,它都會獲取 Pack 實體中的所有 Card 實體并將它們作為新實體保存到數(shù)據(jù)庫中,即使其中一些已經(jīng)存在于我的數(shù)據(jù)庫中. 我希望它檢查 Pack 實體是否有一組卡片實體,它應該檢查數(shù)據(jù)庫中是否已經(jīng)存在具有此類 ID 的每張卡片,并且只添加新卡片。我嘗試清除集合,然后只添加我想要保存的新元素,但隨后它只是從數(shù)據(jù)庫中刪除了所有不在當前包狀態(tài)的內(nèi)容并只添加新元素我想要保存 @ManyToMany 相關 Set 的最好方法,這樣它就不會在我的數(shù)據(jù)庫中創(chuàng)建新的重復實例
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

我拿到包的方式真的很糟糕,我什至不會給你看)

有幫助的是:將所有存儲庫邏輯從控制器移動到服務,并用 @transactional 注釋標記它!


查看完整回答
反對 回復 2022-11-02
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號