我有一个简单的一对多关系,如此:
实体客户:
...
@OneToMany(targetEntity = Ticket.class)
@JoinColumn(name = "customer_id")
public Collection<Ticket> getTickets() {
return tickets;
}
实体票
....
@ManyToOne
public Customer getCustomer() {
return customer;
}
当我删除在Ticket中具有相关记录的客户实体时,Hibernate将在Ticket中为这些记录“null”customer_id并删除该客户。 这绕过了customer_id上FK上现有的ON DELETE RESTRICT约束。
我希望Hibernate抛出异常而不是在相关记录中归零customer_id。 我怎样才能做到这一点? 我认为这应该是默认行为,但似乎并非如此
答案 0 :(得分:0)
我自己找到了解决方案: 此行为的原因是映射错误。 @JoinColumn必须在拥有的实体(Ticket)中定义,而拥有的实体(Customer)必须定义&#39; mappedBy&#39;。
@ManyToOne
@JoinColumn(name = "customer_id")
public Customer getCustomer() {
....
@OneToMany(targetEntity = Ticket.class, mappedBy = "id")
public Set<Ticket> getTickets() {
return tickets;
}