我的情況是:帶有子消息的實體父 MainSpeech。消息又是實體附件的父級。我嘗試通過添加具有兩個新附件的新按摩來保留/合并現有的 MainSpeech。持久化/合并失敗,因為 ID_MESSAGE 為空。ID_MESSAGE 是連接 Messages with Attachment 的外鍵。//Entity MainSpeech@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="mainSpeech")public List<Messages> getMessages() { return messages;}public void setMessages(List<Messages> messages) { this.messages = messages;}//Entity Messages@ManyToOne(fetch=FetchType.LAZY)@JoinColumn(name="ID_MAINSPEECH",nullable=false)public MainSpeech getMainSpeech() { return mainSpeech;}public void setMainSpeech(MainSpeech mainSpeech) { this.mainSpeech = mainSpeech;}@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="messages")public List<Attachments> getAttachments() { return attachments;}public void setAttachments(List<Attachments> attachments) { this.attachments = attachments;}//Entity Attachments @ManyToOne(fetch=FetchType.LAZY)@JoinColumn(name="ID_MESSAGE",nullable=false)public Messages getMessages() { return messages;}public void setMessages(Messages messages) { this.messages = messages;}
2 回答

GCT1015
TA貢獻1827條經驗 獲得超4個贊
你甚至不需要這條線:
entityManager.persist(messaggio);
這是因為您已經在此處添加了關聯:
conversazione.getMessaggi().add(messaggio);
然后用entityManager.merge(conversazione);
. 同樣在你擁有的每一個一對多的關系中cascade=CascadeType.ALL
,孩子都是堅持的。
您所做的是插入一個對象,該對象已經在 db.xml 中。
添加回答
舉報
0/150
提交
取消