Sql 同一函数的不同删除结果
我使用Crud存储库删除函数删除循环中的对象。我的对象具有也应与其删除的关系(孤立删除)+级联类型=全部。 但我注意到,第一次迭代正确地删除了具有关系的对象,并且该sql看起来:Sql 同一函数的不同删除结果,sql,spring,postgresql,hibernate,spring-data,Sql,Spring,Postgresql,Hibernate,Spring Data,我使用Crud存储库删除函数删除循环中的对象。我的对象具有也应与其删除的关系(孤立删除)+级联类型=全部。 但我注意到,第一次迭代正确地删除了具有关系的对象,并且该sql看起来: Hibernate: delete from base_interval_last_modifications where base_interval_id=? Hibernate: delete from vis
Hibernate:
delete
from
base_interval_last_modifications
where
base_interval_id=?
Hibernate:
delete
from
visit
where
id=?
Hibernate:
delete
from
last_modification
where
id=?
Hibernate:
delete
from
base_interval
where
id=?
第二次迭代生成以下sql语句:
Hibernate:
delete
from
visit
where
id=?
有人能解释一下,同一类型对象上的同一个函数如何生成另一个语句,而实际上却不能正确地删除所有关系
更新“更多代码”:
在第一个循环中,baseInterval被正确删除,workInterval未被触动,但在第二个循环中,只有不带baseInterval的访问被删除
@Entity
class Visit(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Int? = null,
@OneToOne(cascade = [CascadeType.ALL], orphanRemoval = true)
@JoinColumn
var baseInterval: BaseInterval? = null,
)
@Entity
class BaseInterval(
id: Int? = null,
@OneToOne(mappedBy = "baseInterval")
var visit: Visit? = null,
@ManyToOne
@JsonIgnore
var workInterval: WorkInterval? = null
)
环路
你能发布代码的其余部分吗:实体+删除调用function@Elgayed我已经发布了可能需要修复的最重要的代码。您是否检查了第二次访问对象是否具有BaseIntervalyes。它看起来几乎像第一个,但有另一个id。
futureVisits
.forEach {
visitRepository.delete(it)
}