java - Hibernate:org.hibernate.PersistentObjectException:传递给持久化的分离实体

标签 java hibernate

我尝试了线程中提到的许多事情。但似乎没有一个能解决我的问题。请告诉我哪里出错了。

模型

@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。如果需要任何其他信息,请告诉我。

最佳答案

通过在 transient MyRequest 实例上调用 Merge 来修复。

之前:

mrh.persist(mr);

之后:

mrh.merge(mr);

如果这样做有任何缺点,请告诉我。

关于java - Hibernate:org.hibernate.PersistentObjectException:传递给持久化的分离实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14659332/

相关文章:

java 8 进行异步I/O

java - 用Java实现uml图

java - mvn install 忽略 hibernate 映射文件

mysql - 在 Play Framework/JPA/hibernate 中截断表?

java - 为什么在 Hibernate 中需要事务来进行只读操作?

java - 修复 OSGi 设置中 ByteBuddy 和 Vaadin 的类加载问题

java - JAXB 编码 XMPP 节

java - hibernate LazyInitializationException

mysql - Hibernate Spring 无法解析属性基本查询

hibernate - gradle 说, 'see compiler error output' ,但没有