当前位置: 首页 > 知识库问答 >
问题:

PersistenceException:已分离的实体传递到Persister

澹台承载
2023-03-14

我在stackoverflow上读了很多关于相同异常的文章,但没有找到任何实际帮助我的东西,所以我在这里:

@Entity
@Table(name="teachers")
public class Teacher extends Model{

public Teacher()

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@OneToMany(fetch=FetchType.LAZY, mappedBy="teacher")
private List<Student> students;

//getter and setter
}
@Entity
@Table(name="students")
public class Student extends Model{

public Student(){}
public Student(Teacher teacher){this.teacher = teacher;}

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
@JoinColumn(name="teacher_id")
private Teacher teacher;

//getter and setter
}
public abstract class Model implements Serializable {

public void save() {
EntityManager entityManager = HibernateUtil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(this);
entityManager.getTransaction().commit();
entityManager.close();
}

public void merge(){
EntityManager entityManager = HibernateUtil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
entityManager.merge(this);
entityManager.getTransaction().commit();
entityManager.close();
}
}
public class TestClass{

Teacher teacher;
teacher = new Teacher();

Student student_1;
Student student_2;

student_1 = new Student(teacher);
student_1.save();

student_2 = new Student(teacher);
student_2.save();

}

共有1个答案

衡子安
2023-03-14

Cascade的工作方式与你想象的不同。它在相关对象上调用相同的函数。因此,如果调用em.persist(student),它将调用persist on teacher。

我想你可能不想把任何东西从学生身上层层递送到老师身上。如果您在一个事务中持久化教师,然后只将其链接到其他事务中的学生,那么您就没有向教师级联任何内容。

 类似资料:
  • 另外,我有一个IOC托管bean,它内部有一个事务方法。 有2个实体具有单向Many2One-- AuModule在上没有引用

  • 我在尝试使用Spring Data JPA和Hibernate作为JPA提供程序执行批插入操作时遇到了问题。 我有以下方法在我的服务。这就是抛出异常的地方。 Institute是一个实例变量,并提前获取。 我还将实体设置为级联、持久和合并。 为什么这段代码起作用 而此代码不

  • 我得到了“分离的实体传递到持久”,但我不明白,该对象如何能够处于分离状态。 这里首先是一些上下文。 每个用户和角色有两个: 实体--除了名称之外--有几个不应与此问题相关的字段,外字段角色来自其基类: 在应用程序启动时,我希望确保此ApplicationRunner中存在管理员用户: 应用程序在启动时抛出异常并关闭: 我在这里的理解是,在从存储库中检索到之后就处于分离状态。 为何超脱?我假设方法上

  • 我有一段很长的JPA+Hibernate代码,它试图在循环中将大量记录插入到DB中。 更奇怪的是,我可以用下面的代码在一次迭代中再现错误。“分离的实体...”第二次刷新时抛出错误。那么这是否意味着第一次同花顺是一个无操作?

  • 我有两个模型,一个用于存储用户详细信息,使用该Id,我试图将用户位置保存在另一个表中,该表使用用户的相同Id作为主键。 为什么我会出现这个错误?坚持是什么意思?我正在使用MySQL数据库(&I)

  • 当试图在web应用程序上创建课程实体实例时,我们遇到以下错误。这是一个JHipster应用程序完整的错误日志,下面是,但主要错误是 更新的代码: