Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 科特林孤儿院不工作_Hibernate_Spring Boot_Kotlin_Spring Data Jpa - Fatal编程技术网

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(值)
}