gpt4 book ai didi

java - 使用 Hibernate 删除父行时如何删除所有子行?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:28:30 25 4
gpt4 key购买 nike

我有 2 个表。

// Accounts
@OneToMany(mappedBy="accounts", cascade=CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Set<Mails> mails;

// Mails
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="user_id" , referencedColumnName="id", insertable=false, updatable=false)
private Accounts accounts;

当父行将被删除时,如何组织删除所有子行?我已尝试为 Accounts 表设置 CascadeType.DELETE_ORPHAN,但如果存在子行,我无法删除父行。

最佳答案

问题可能是在错误的方向上定义了关系。假设您有一个 account 表与 mail 表具有一对多关系,您最终将无法从 account< 中删除记录 直到它具有关联的 mail 行,如果您在 account 上定义关系以引用 mail。正确的方法是在 mail 上创建外键来引用 account

ON DELETE CASCADE ,您告诉 MySQL 它应该删除一行(其表具有外键) 如果其父项(由键引用)被删除。此操作根据定义是允许的,因为在这种情况下,已删除的记录具有对它的引用。相反,如果一条记录有指向其他记录的引用,则不允许删除。

关于java - 使用 Hibernate 删除父行时如何删除所有子行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077499/

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