为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2022-07-20 16:01:41
我的情况是:带有子消息的实体父 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 中。


查看完整回答
反对 回复 2022-07-20
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

对于我的代码的普遍兴趣,缺乏。我忘记了巩固父子关系的代码行:

allegato.setMessaggi(messaggio);


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信