Hibernate 多对一注释和删除错误

发布于 2024-10-16 16:50:10 字数 1061 浏览 4 评论 0原文

我这个 bean 带有注释(显示相关注释):

@Entity
@Table(name = "Prodotti")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Prodotto {
    int id;
    String codice;
    double prezzo;
    double prezzoCanone;
    String descrizione;
    String note;

    Prodotto prodottoDiRiferimento;

...

    @ManyToOne(cascade = CascadeType.REMOVE)
    public Prodotto getProdottoDiRiferimento() {
        return prodottoDiRiferimento;
    }

    public void setProdottoDiRiferimento(Prodotto prodottoDiRiferimento) {
        this.prodottoDiRiferimento = prodottoDiRiferimento;
    }


}

全部映射到 mySQL。

如果我删除其中一个 prodottoDiRiferimento 属性设置为 null 的 bean,而其他 bean 也具有 prodottoDiRiferimento 属性,我会得到:

java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`jacciseweb`.`prodotti`, CONSTRAINT `FKC803BB11ACD3B812` FOREIGN KEY (`prodottoDiRiferimento_ID`) REFERENCES `prodotti` (`ID`))

我想要的是所有指向已删除的 prodottoDiRiferimento 属性的 bean也会被删除。

怎么做呢?

I've this bean with annotations (showing the relevant ones):

@Entity
@Table(name = "Prodotti")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Prodotto {
    int id;
    String codice;
    double prezzo;
    double prezzoCanone;
    String descrizione;
    String note;

    Prodotto prodottoDiRiferimento;

...

    @ManyToOne(cascade = CascadeType.REMOVE)
    public Prodotto getProdottoDiRiferimento() {
        return prodottoDiRiferimento;
    }

    public void setProdottoDiRiferimento(Prodotto prodottoDiRiferimento) {
        this.prodottoDiRiferimento = prodottoDiRiferimento;
    }


}

all mapped to mySQL.

If I do a delete of one of these beans that has a prodottoDiRiferimento property set to null and that other beans have as they prodottoDiRiferimento, I get:

java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`jacciseweb`.`prodotti`, CONSTRAINT `FKC803BB11ACD3B812` FOREIGN KEY (`prodottoDiRiferimento_ID`) REFERENCES `prodotti` (`ID`))

What I'd like is that all the beans that point to the deleted one with the prodottoDiRiferimento property would get deleted too.

How to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妳是的陽光 2024-10-23 16:50:10

您是否将反向 @OneToMany 关系声明为

@OneToMany(mappedBy = "prodottoDiRiferimento", cascade = CascadeType.REMOVE)

如果您所做的一切,您需要做的就是删除父级,并且所有子级都应该被删除。

Do you have the inverse @OneToMany relationship declared as

@OneToMany(mappedBy = "prodottoDiRiferimento", cascade = CascadeType.REMOVE)

If you do all you should need to do is remove the parent and the children should all be removed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文