java - Hibernate 抛出无法删除或更新父行异常

标签 java mysql hibernate

尝试从数据库中删除项目时,hibernate 抛出异常:

Cannot delete or update a parent row: a foreign key constraint fails (`ticketer`.`UserOrder_Ticket`, CONSTRAINT `FKiyeesx6teiqckayn6agqw5b58` FOREIGN KEY (`tickets_id`) REFERENCES `Ticket` (`id`))
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

我的实体:

门票:

@Entity
public class Ticket {

@Id
@GeneratedValue
private Long id;

@OneToOne(cascade = CascadeType.ALL)
private Event event;

private String number;

private BigDecimal price;
}

用户订单:

@Entity
public class UserOrder {

@Id
@GeneratedValue
private Long id;

@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Ticket> tickets;

@OneToOne
private User user;

private BigDecimal price;
private PaymentStatus paymentStatus;
private LocalDateTime orderDate;
}

我的数据库有连接实体的表( hibernate 标准)。 有什么可能的解决方案让它发挥作用吗?我正在使用 MySql。

最佳答案

如果你想首先删除 UserOrder 对象,你需要删除这个 UserOrder 对象和所有与其有关系的 Ticket 对象之间的关系。所以我认为你需要在 Ticket 类中使用 ManyToOne 注释创建 UserOrder 对象。然后在删除存在的对象之前将此字段设置为 null,并在 UserOrder 类中将门票值也设置为 null。

关于java - Hibernate 抛出无法删除或更新父行异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857908/

相关文章:

java - 计算文档中字符串的唯一出现次数

java - Java 请求确认的简短方法

java - 在 LDAP 中搜索用户

mysql - 将数字设置为同一事务中计数器表中的列

javascript - 从下拉选项填充表单输入,解析 json 数据属性

java - Envers 在插入子实体时审核父实体,但在更新时不审核

Java - IzPack 和 EOFException

MySql Update field or Insert if not exists, 没有主键

java - 嵌套单表继承

java - SQL错误: 1366 Incorrect integer value Spring MVC Hibernate