Hibernate throws无法删除或更新父行异常

时间:2017-08-24 09:29:31

标签: java mysql hibernate

尝试从db中删除项目时,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;
}

UserOrder:

@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。

1 个答案:

答案 0 :(得分:1)

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