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

org.hibernate.PersistentObjectException:

org.hibernate.PersistentObjectException:

炎炎设计 2021-10-13 14:00:21
我有一个包含对象 messengerData 的 Notification 类:public class Notification{    @OneToOne(mappedBy = "messengerDataId")    private MessengerData messengerData;    ...}MessengerData 类包含一个资源映射,这意味着 messengerdata 包含几个,这就是我使用一对多关系的原因:public class MessengerData{        @OneToOne(mappedBy = "messengerData")        private Notification notification;        @OneToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE },                 fetch = FetchType.EAGER)        @Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DETACH })        @JoinTable(name = HemisTablesNames.MESSENGER_RESOURCES, joinColumns = @JoinColumn(name = "idResource"),                 inverseJoinColumns = @JoinColumn(name = "messengerDataId"))        private Map<String, Resource> resources = new HashMap<String, Resource>();        ...Resource 类包含一个 map<String, NotificationTextData>:    @OneToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE },        fetch = FetchType.EAGER)@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DETACH })@JoinTable(name = HemisTablesNames.MESSENGER_NOTIF_TEXT_DATA, joinColumns = @JoinColumn(name = "idNTD"),        inverseJoinColumns = @JoinColumn(name = "idResource"))private Map<String, NotificationTextData> textDatas;这是我保存对象的方式:EntityManager.persist(notification);EntityManager.commitTransaction();我的问题是我收到此异常:无法保存通知:org.hibernate.PersistentObjectException:分离的实体传递给持久化:com.ubiant.hemis.type.Notification有人可以帮我解决这个问题吗?
查看完整描述

2 回答

?
长风秋雁

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

如果您实例化通知,则不能使用persist,因为生成的对象未附加到休眠会话。你应该使用merge而不是persist


查看完整回答
反对 回复 2021-10-13
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

尝试使用这样的东西:


@ElementCollection(targetClass = String.class)

@CollectionTable(name = "MAP")

@MapKeyColumn(name="key")

@Column(name="value")

private Map<String, String> map;

您试图在没有引用的情况下持久化对象。也许那是你的问题。


查看完整回答
反对 回复 2021-10-13
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

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