gpt4 book ai didi

java - 使用 Hibernate 时出现 ORA-02292

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:55 24 4
gpt4 key购买 nike

我正在尝试实现删除功能,但我得到的只是这个 ORA-02292 错误:

Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02292: Integritäts-Constraint (VDMA.FK892DE8B473F40868) verletzt - untergeordneter Datensatz gefunden

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)

我有一个与其子实体具有 n:m 关系的实体 (MainEntity)。

例如:一个用户可以有多辆车,每辆车可以由不同的用户驾驶。

当用户被删除时,我希望用户和汽车之间的关联也被删除。这就是为什么我认为我可以做到以下几点:

用户实体

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "user_car", joinColumns = {@JoinColumn(name = DATABASE_COLUMN_ID, nullable = false, updatable = false) }, inverseJoinColumns = {@JoinColumn(name = DATABASE_COLUMN_TYPE_ID,
nullable = true, updatable = false) })
private Set<UserCar> userCars;

汽车实体

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "userCars")
private Set<User> users;

结果是:

表已创建,数据已保存 - 一切正常。除了删除条目:一旦我尝试删除用户并且用户有车(因此用户:汽车关系),我就会收到上面显示的错误。

如果用户没有任何汽车,我可以毫无问题地删除他。所以问题一定出在USER_CAR表的约束上。

最佳答案

同时清除 userCars:

user.getUserCars().clear()

这将打破用户和关联汽车之间的关联(它将从联结表中删除相应的记录)。

此外,您不希望在多对多关联上使用 CascadeType.ALL,因为它隐式包含 CascadeType.REMOVE。使用它意味着删除也将级联到汽车,尽管还有其他用户与这些汽车相关联。

关于java - 使用 Hibernate 时出现 ORA-02292,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022675/

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