gpt4 book ai didi

java - JPA的cascade=REMOVE和Hibernate的@OnDelete一起用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:28 31 4
gpt4 key购买 nike

我继承了一个代码库,几乎所有关系都有以下注释:

@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "someThing")
@OnDelete(action = OnDeleteAction.CASCADE)

现在我很难理解 @OnDelete 首先做了什么。 Hibernate: OnDelete vs cascade=CascadeType.REMOVE很有趣,但遗憾的是没有任何答案,@OnDelete 的 JavaDoc 特别毫无值(value)。

从其他问题来看,OnDelete 注释似乎让 DB 以某种方式进行级联,而 @OneToMany 上的级联指令让 ORM 来完成,但使用的目的是什么他们在一起?

@OneToMany 的级联指令真的不允许 ORM 实现生成基于数据库的级联吗?

最佳答案

假设您有一对一的定向关系

class House {

@OneToOne
Object door;

}

如果您使用 CascadeType.REMOVE,那么删除房子也会删除门。

    @OneToOne(cascade=CascadeType.REMOVE)
Object door;

如果您使用@O​​nDelete,那么删除门也会删除房子。

    @OneToOne
@OnDelete(action = OnDeleteAction.CASCADE)
Object door;

在这里阅读更多:https://rogerkeays.com/jpa-cascadetype-remove-vs-hibernate-ondelete

关于java - JPA的cascade=REMOVE和Hibernate的@OnDelete一起用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563592/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com