在Spring Boot中,如果需要将一个OneToOne映射Audited到Envers Revision,并在Postload后查询历史记录,则可以按照以下步骤进行操作:
org.hibernate
hibernate-envers
${hibernate-version}
org.hibernate
hibernate-core
${hibernate-version}
org.springframework.boot
spring-boot-starter-data-jpa
@Entity
@Audited
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// OneToOne mapping
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private UserDetails userDetails;
// getters and setters
}
@Entity
@Audited
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String address;
// OneToOne mapping
@OneToOne
@JoinColumn(name = "user_id")
private User user;
// getters and setters
}
@Component
public class AuditEventListener implements PostLoadEventListener {
@Autowired
private AuditReader auditReader;
@Override
public void onPostLoad(PostLoadEvent event) {
if (event.getEntity() instanceof User) {
User user = (User) event.getEntity();
User oldUser = auditReader.find(User.class, user.getId(), 1L);
User newUser = auditReader.find(User.class, user.getId(), user.getRevisionNumber());
// do something with oldUser and newUser
}
}
}
在这里,我们定义了一个名为AuditEventListener的组件,它实现了PostLoadEventListener接口,以在Postload后获取历史记录。我们注入了AuditReader,以获
上一篇:AuditedGemAddCommentonDestroy如何实现?
下一篇:AuditingEntityChangeconditionallybasedoninstancevalue(基于实例值有条件地审计实体变化)