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

JAVAlang.IllegalArgumentException:删除StudentSubject的分离实例

轩辕亮
2023-03-14

我在层级结构中有三个实体:1)教师2)学生3)教师实体中的主体与学生班级有着一种共同的关系。学生班与学科班有着千丝万缕的联系。我有一个特殊的情况,老师有5个学生,学生有很多科目分配给他们。我正在从教师实体中获取教师实体和学生列表。在5个实体中,我使用remove()函数从列表中删除了一个学生实体。保存教师实体时,将错误获取为**java。lang.IllegalArgumentException:删除StudentSubject**的分离实例,此处StudentSubject是Student的子实体。

public class Teacher {

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="studentCode", orphanRemoval = true)
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SELECT)
@org.hibernate.annotations.BatchSize(size=30)
private List<Student> students = new ArrayList<Student>();

}

public class Student {

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="studentSubjectCode", orphanRemoval = true)
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SELECT)
@org.hibernate.annotations.BatchSize(size=30)
private List<StudentSubject> studentsubjects = new ArrayList<StudentSubject>();

}


public class StudentSubject {


}

非常感谢任何帮助。

共有1个答案

常俊侠
2023-03-14

经过调试和探索,我找到了解决此问题的方法。在从父列表中删除学生实体之前,我刷新了该实体。然后,学生主题数组的所有引用都变得活跃,从而在保存教师对象的同时解决了分离实体的问题。

 类似资料:
  • 当我尝试从数据库中删除数据时: 我得到一个错误: 但当我换成: 数据被删除了。为什么? 我想看看实体是否得到了管理: 我看到了真实。 那为什么呢? 在一种情况下会产生错误?

  • 因此,我试图将Hibernate OGM(4.1.0.beta4)与MongoDB一起使用,现在我遇到了一个让我困惑的问题,所以我得到了一个我创建的实体列表,然后我尝试遍历该列表并删除每个实体-然而,当我尝试得到以下异常“删除一个分离的实例”时,我假设我错过了持久性设置中的一些东西。 我想我最困惑的事情是用deleteAllTests()获得实体列表,然后试图删除它们,但它们已经分离了?所以我显然

  • 我读到删除分离的实体将导致IllegalArgumentExcetpion,该实体应该被管理删除。但是,我使用的是spring JPA存储库接口,删除操作是对一个分离的实体进行的,我已经用我想要删除的ID创建了新的实体,我没有例外。在spring jpa中是否有文档说明我们可以删除分离的实体?我找不到正式文件。

  • 假设我们在 “contact-form” 分支上的工作已经完成了。并且我们也已经把最终的改动整合到了 “master” 分支。现在我们就不再需要这个分支了。把它删除掉吧: $ git branch -d contact-form 为了保持一致,我们也有必要删除它所对应的远程分支。附加上一个 “-r” 参数就可以了: $ git branch -dr origin/contact-form

  • 问题内容: 我正在使用EF 4 STE对附件对象进行建模。该 附件 包含了名称,描述,日期,以及最重要的数据()。为了优化加载,我不想在绝对必要之前(即当用户从客户端单击时)检索Data属性。 为了遵循这种方法,我使用了此处描述的表拆分技术。我将“ 附件” 表分为“ 附件” (“名称”,“描述”,“日期”)和“ AttachmentData” (数据)。在我的EF模型中,这是一对一的关系。一切正常

  • 我有一个liquibase changelog文件,其中包含一些插入语句,我已经用标记完成了这些操作,但不知何故,当我从changelog(对于SQL Server数据库)生成SQL文件时,它删除了语句末尾的分号。在我的changelog文件中,它如下所示: 但是由此生成的SQL文件如下所示: 为什么会发生这种情况,我可以做些什么来防止它?