删除具有相关记录的实体时的 Hibernate 默认行为

Hibernate default behaviour when deleting entities with related records

我有一个简单的一对多关系,如下所示:

实体客户:

...
@OneToMany(targetEntity = Ticket.class)
@JoinColumn(name = "customer_id")
public Collection<Ticket> getTickets() {
    return tickets;
}

实体票证

....
@ManyToOne
public Customer getCustomer() {
    return customer;
}

当我删除在Ticket中有相关记录的客户实体时,Hibernate会'null'customer_id在Ticket中针对这些记录删除客户。 这绕过了 customer_id.

上 FK 上现有的 ON DELETE RESTRICT 约束

我希望 Hibernate 在相关记录中抛出异常而不是清空 customer_id。 我怎样才能做到这一点? 我认为这应该是默认行为,但事实并非如此

我自己找到了解决方案: 此行为的原因是映射错误。 @JoinColumn 必须在拥有实体 (Ticket) 中定义,而拥有实体 (Customer) 必须定义 'mappedBy'.

@ManyToOne
@JoinColumn(name = "customer_id")
public Customer getCustomer() {

....

@OneToMany(targetEntity = Ticket.class, mappedBy = "id")
public Set<Ticket> getTickets() {
    return tickets;
}