【发布时间】:2019-03-02 12:35:12
【问题描述】:
我有一个类 Notification,其中包含一个对象 messengerData:
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 类包含一个地图
@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
有人可以帮我解决这个问题吗?
【问题讨论】:
-
在保存实体的地方添加一些代码
-
我编辑了我的帖子并添加了我如何保存对象,但我认为问题不是来自于此。
-
Aymen,您要保存的对象 (
notification),它是从哪里获得的? -
这是我在接收新通知请求时实例化的对象通知,我将其作为 json 对象接收。
-
如果你实例化通知那么你不能使用持久化,因为产生的对象没有附加到休眠会话。您应该使用
merge而不是persist。详情在这里:stackoverflow.com/a/13837495/2224047
标签: java hibernate jpa persistence