javax 父子关系的持久化。最后一个孩子又是另一个孩子的父母

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

}


蛊毒传说
浏览 104回答 2
2回答

GCT1015

你甚至不需要这条线:entityManager.persist(messaggio);这是因为您已经在此处添加了关联:conversazione.getMessaggi().add(messaggio);然后用entityManager.merge(conversazione);.&nbsp;同样在你拥有的每一个一对多的关系中cascade=CascadeType.ALL,孩子都是坚持的。您所做的是插入一个对象,该对象已经在 db.xml 中。

慕田峪9158850

对于我的代码的普遍兴趣,缺乏。我忘记了巩固父子关系的代码行:allegato.setMessaggi(messaggio);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java