Hibernate 科特林孤儿院不工作
是否有人存在删除子记录的类似问题,但没有使用删除注释 下面是我在模型类构造函数中的代码示例:Hibernate 科特林孤儿院不工作,hibernate,spring-boot,kotlin,spring-data-jpa,Hibernate,Spring Boot,Kotlin,Spring Data Jpa,是否有人存在删除子记录的类似问题,但没有使用删除注释 下面是我在模型类构造函数中的代码示例: @OneToMany(orphanRemoval = true, cascade = arrayOf(CascadeType.ALL)) @JoinColumn(name = "categoryId", nullable = false) var books: List<BOOK> = emptyList() @OneToMany(orphaneremovation=true,cascad
@OneToMany(orphanRemoval = true, cascade = arrayOf(CascadeType.ALL))
@JoinColumn(name = "categoryId", nullable = false)
var books: List<BOOK> = emptyList()
@OneToMany(orphaneremovation=true,cascade=arrayOf(CascadeType.ALL))
@JoinColumn(name=“categoryId”,nullable=false)
var books:List=emptyList()
带有cascade=arrayOf(CascadeType.ALL)的CRUD工作正常,但在“一对多”注释中添加orphanRemoving=true时,它无法再工作,并引发异常,如下所示:
org.hibernate.HibernateException:具有
cascade=“所有删除孤立项”不再由所有者引用
实体实例:
添加删除的目的是从数据库中永久删除子记录 有一篇博客文章解释了这种异常的原因: 您正在通过setter设置新集合,从而使父实体不引用原始集合。这不适合Hibernate,让它不知道该怎么做
books
是var
,而不是val
,因此我假设在代码中的某个地方,您正在将其设置为所需的值。假设博客文章中的推理在这里是有效的,那么使用可变类型的final
字段应该是一个不错的选择
val books: MutableList<BOOK> = mutableListOf()
val books:MutableList=mutableListOf()
有一篇博客文章解释了导致此类异常的原因:
您正在通过setter设置新集合,从而使父实体不引用原始集合。这不适合Hibernate,让它不知道该怎么做
books
是var
,而不是val
,因此我假设在代码中的某个地方,您正在将其设置为所需的值。假设博客文章中的推理在这里是有效的,那么使用可变类型的final
字段应该是一个不错的选择
val books: MutableList<BOOK> = mutableListOf()
val books:MutableList=mutableListOf()
@OneToMany(cascade=arrayOf(CascadeType.ALL),orphaneremovation=true,fetch=FetchType.EAGER)
@JoinColumn(name=“categoryId”,nullable=false)
var books:MutableList=mutableListOf()
设置(值){
field.clear()
field.addAll(值)
}
@OneToMany(cascade=arrayOf(CascadeType.ALL),orphaneremovation=true,fetch=FetchType.EAGER)
@JoinColumn(name=“categoryId”,nullable=false)
var books:MutableList=mutableListOf()
设置(值){
field.clear()
field.addAll(值)
}