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

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

使用 OneToMany 引用一組實(shí)體,并使用 OneToOne 引用該集合中的一個(gè)實(shí)體

使用 OneToMany 引用一組實(shí)體,并使用 OneToOne 引用該集合中的一個(gè)實(shí)體

30秒到達(dá)戰(zhàn)場 2023-05-17 15:01:30
我正在嘗試實(shí)現(xiàn)一個(gè) Hibernate 關(guān)系,其中實(shí)體 A 通過引用一組實(shí)體@OneToManyB。這些實(shí)體之一B可能具有特殊作用,因此(可選)也應(yīng)由Avia引用@OneToOne。實(shí)體A:public class Group {    @Id    @GeneratedValue    @Column(name = "id", updatable = false)    private int id;    @OneToMany(cascade = CascadeType.ALL, mappedBy = "group")    private List<GroupMember> members = new ArrayList<>();    @OneToOne(cascade = CascadeType.ALL)    @JoinColumn(name = "groupSpokesman")    private GroupMember spokesman;}實(shí)體B:public class GroupMember {    @ManyToOne    @JoinColumn(name = "groupId")    private Group group;}表group:id | groupSpokesman | ...該列引用了被選為發(fā)言人groupSpokesman的那個(gè)的 ID 。GroupMember如果 GroupMembers 中的一個(gè)是 Spokesman,則他應(yīng)該保留在 GroupMembers 集合中。NULL如果沒有選出發(fā)言人并且所有 GroupMembers 都受到平等對待,則該列可能是。表groupMember:id | groupId | ...該列g(shù)roupId引用 所屬的組的 ID GroupMember。Hibernate 成功保存實(shí)體。如果 GroupMembers 都不是發(fā)言人,則一切正常。但是一旦其中一個(gè)實(shí)體Group.members也被分配給,Hibernate 就會將該特定 GroupMember 的Group.spokesman外鍵設(shè)置為,這意味著發(fā)言人不再是該組的成員。外鍵已正確設(shè)置為發(fā)言人的 ID。GroupMember.groupNULLGroup.spokesman
查看完整描述

1 回答

?
搖曳的薔薇

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

我最初的帖子中顯示的映射似乎沒問題。只有在一次保存實(shí)體 A 和所有映射的實(shí)體 B 時(shí)才會出現(xiàn)問題,例如


Group g = new Group();


GroupMember gm1 = new GroupMember();

GroupMember gm2 = new GroupMember();


g.addGroupMember(gm1); // gm1.group is null

g.addGroupMember(gm2);


g.setGroupSpokesman(gm1);


repository.save(g);

一旦我保存實(shí)體兩次(第一次在設(shè)置組發(fā)言人之前;第二次之后),一切都按預(yù)期工作:


Group g = new Group();


GroupMember gm1 = new GroupMember(); // gm1.group is set to ID of g

GroupMember gm2 = new GroupMember();


g.addGroupMember(gm1);

g.addGroupMember(gm2);


repository.save(g);


g.setGroupSpokesman(gm1);


repository.save(g);

不過,這對我來說似乎是一種解決方法。


查看完整回答
反對 回復(fù) 2023-05-17
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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