我有两个实体,它们之间的关系如下所示:
@Entity
@Table(name = "APPOINTMENT")
public class Appointment {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long codeAp;
@ManyToOne(fetch = FetchType.EAGER)
, @OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "codeP")
private Patient patient;
//attributes
//getters and setters
//constructors
@Entity
@Table(name = "PATIENT")
public class Patient {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long codeP;
//attributes
//getters and setters
//constructors
我正在使用JpaRepository的删除方法。 在数据库中,PATIENT和APPOINTMENT之间存在约束, 当我删除Patient时,我想删除孤儿项。 我添加了@OnDelete hibernate注释,但它对我无效! 你能告诉我为什么吗? 我想保留这种单向关系,你能帮我吗?
orphanRemoval
标记吗? - MubinManyToOne
是一种合成关系,在数据库中,该关系仅使用OneToMany
关系进行建模。如果您想在删除患者时删除预约,则应级联删除操作,就像您所做的那样。OrphanRemoval意味着JPA将跟踪哪些预约在合成的ManyToOne
集合中,如果您从患者的集合中删除了一个预约,JPA将在事务提交时将其删除。这具有(小)成本,因为JPA必须在加载患者时跟踪哪些预约存在,并在提交期间执行差异。 - Klaus Groenbaek