【发布时间】:2022-02-01 20:50:40
【问题描述】:
我知道here 列出了一个类似的问题,但就我自己而言,我没有日期。相反,我有一个嵌入式类,其中包含一个实体。 我有以下实体定义:
Person JPA 实体
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Person {
@Id
private int id;
@CreatedDate
private OffsetDateTime creationDate;
@LastModifiedDate
private OffsetDateTime updatedDate;
@Version
private Long version;
@Embedded
private ContactAddress contactAddress;
}
ContactAddress JPA 实体
@Embeddable
public class ContactAddress {
private String notice;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "former_street_id")
private Street formerStreet;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "new_street_id")
private Street newStreet;
}
街头 JPA 实体
@Table(name = "p_street")
public class Street {
@Id
private int id;
private String line1;
private String line2;
}
Street JPA 实体是 ContactAddress 类的一个字段。当我更新 ContactAddress 实例时,如果更改的是 ContactAddress 的 'notice' 字段,则 Person 实体中的版本会递增。但是,如果我更新任何街道对象字段,则版本不会增加。 原因是我肯定错过了如何通知 auditingEntityListner 在 Person 实体的 updateDate 字段上引发事件。
看起来,有 如果我在嵌入的 ContactAddress 中有 Street 实体,则在 Person 实体和 Street 实体之间创建了断开连接。有没有办法在 JPA 中解决这个问题?
【问题讨论】:
标签: java spring-boot hibernate jpa spring-data-jpa