我的情况是:带有子消息的实体父 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
提交
取消