![](/img/trans.png)
[英]org.hibernate.PersistentObjectException: detached entity passed to persist - ManyToMany Mapping
[英]Hibernate: org.hibernate.PersistentObjectException: detached entity passed to persist
我嘗試過很多線程中提到的東西。 但似乎沒有一個能解決我的問題。 請告訴我哪里出錯了。
楷模
@Entity
public class MySession {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(unique=true)
private String sessionId;
@OneToMany(mappedBy="session")
private List<MyRequest> requestList;
}
@Entity
public class MyRequest{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private MySession session;
}
在我的servlet中:
SessionHome sh = new SessionHome(); //DAO Class
MyRequestHome mrh = new MyRequestHome(); //DAO Class
MySession session = sh.findBySessionId(sessionId); //Object is in the detached state
session.setUpdated(new Date()); //Update the Session update time stamp
session = sh.merge(session); //Update the database with the session. I was hoping merge would reattach the detached object
MyRequest mr = new MyRequest(hsrequest, newSessionToken);
mr.setSession(session);
mrh.persist(mr); //PersistentObjectException here. This is because of the MySession object I have set over here.
首先,我從數據庫中獲取MySession對象,更新它並在新創建的MyRequest對象中設置它。 當我嘗試持久化MyRequest對象時,它會給我PersistentObjectException。 如果需要任何其他信息,請告訴我。
通過在瞬態MyRequest實例上調用Merge來修復。
之前:
mrh.persist(mr);
后:
mrh.merge(mr);
如果這樣做有任何缺點,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.