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

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

使用 FK“重用”保存實(shí)體

使用 FK“重用”保存實(shí)體

明月笑刀無情 2024-01-28 16:46:36
我正在使用 Spring + Hibernate JPAA。我有一個(gè)實(shí)體:A  id (PK)  Set<B> b;  otherProps…B  id (PK)  String name; (unique)  otherProps…并且有一個(gè)M到M的表鏈接A.id,B.id。如果用戶創(chuàng)建一個(gè)實(shí)體:A.id = 0A.b.id = 0A.b.Name = "Admin";它會保存,但會在 B 表中創(chuàng)建一個(gè)新條目。將 B 視為系統(tǒng)定義的“角色”表,它不應(yīng)該改變。所以我希望它重新使用 Admin 并自動(dòng)填充 id。該對象來自 REST api…在這種情況下調(diào)用者是否應(yīng)該知道 id 和名稱?或者他們應(yīng)該只能通過 id 或名稱填充?遇到這種情況該如何處理呢?或者把id去掉,用名字作為PK會更好嗎?編輯:澄清...用戶實(shí)體角色實(shí)體UserRole表與User.Id、Role.Id M2M關(guān)系。角色表包含: 1 用戶 2 管理員 3 超級用戶那是我定義的固定表。不允許調(diào)用者添加角色。因此,如果User1是用戶,那么M2M表1,1中將會有一個(gè)條目。現(xiàn)在,想象一下如果有人傳入一個(gè)角色為“User”的新用戶對象 User2。就像現(xiàn)在一樣,它在 Roles id=4 value=User 中創(chuàng)建一個(gè)條目(重復(fù)條目),并在 M2M 表中創(chuàng)建一個(gè) 1,4,其中預(yù)期行為為 1,1,即重用現(xiàn)有的“用戶”角色?;旧希蚁胝{(diào)用者知道用戶 id 是有意義的,但我不確定調(diào)用者知道角色 id 是否有意義?似乎他們更了解可能的角色。有點(diǎn)像枚舉類型的行為?
查看完整描述

1 回答

?
汪汪一只貓

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

如果沒有完整的代碼,很難弄清楚發(fā)生了什么。但總的來說,您應(yīng)該考慮以下概念:


帶注釋的實(shí)體JoinTable是關(guān)系的所有者。這意味著如果您啟用Cascade.Merge“Owner”,向其中添加新記錄,則會向中間表添加另一條記錄。


一個(gè)例子


Role實(shí)體:


{

  @ManyToMany(cascade = {CascadeType.MERGE})

    @JoinTable(name = "tb_role_privilege",

            joinColumns = @JoinColumn(name = "role_id"),

            inverseJoinColumns = @JoinColumn(name = "privilege_id"))

    private Set<Privilege> privileges = new HashSet<>();

}

和Privilege實(shí)體:


{

      @ManyToMany(mappedBy = "privileges")

    private Set<Role> roles = new HashSet<Role>();

}

這里,Role是關(guān)系的所有者。當(dāng)您使用 創(chuàng)建角色對象 并使用 ,id=0填充其權(quán)限列表并ids=[0 1 2]調(diào)用 時(shí)save,它會將角色記錄插入到 中tb_role,并且還會將 (0,0)、(0,1) 和 (0,2) 插入到中間表tb_role_privilege,但它不會向 中插入任何內(nèi)容tb_privilege。因此,您需要在tb_privilege插入角色記錄之前插入權(quán)限記錄。


這是一種良好且簡單的m2m人際關(guān)系方法。如果它不滿足您的場景,請為您的代碼提供更多信息。


查看完整回答
反對 回復(fù) 2024-01-28
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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