Spring boot Hibernate Envers为单个事务中每个模型的更改创建一个新的修订版
我们有一个要求,即不使用当前时间戳作为revtstmp的值,我们必须从审计的模型的日期字段中选择一个值 示例:我们有1个@Audited字段和一个其他日期字段 模型类 字符串字段1; 字符串字段2 @审计 整型字段3 日期字段4 每当字段3发生更改时,我们都希望为每个已更改的模型创建一个单独的修订,而不是为所有模型创建一个单独的修订(与当前时间戳相关),并将该修订与相应模型的日期字段4的值相关联 问题是CustomRevisionListener在事务结束时只创建了一次修订。我们尝试使用@Transactional(propagation=propagation.REQUIRES_NEW)并分别保存每个模型,但它仍然只为上次更新的模型创建了一个修订版Spring boot Hibernate Envers为单个事务中每个模型的更改创建一个新的修订版,spring-boot,hibernate,hibernate-envers,Spring Boot,Hibernate,Hibernate Envers,我们有一个要求,即不使用当前时间戳作为revtstmp的值,我们必须从审计的模型的日期字段中选择一个值 示例:我们有1个@Audited字段和一个其他日期字段 模型类 字符串字段1; 字符串字段2 @审计 整型字段3 日期字段4 每当字段3发生更改时,我们都希望为每个已更改的模型创建一个单独的修订,而不是为所有模型创建一个单独的修订(与当前时间戳相关),并将该修订与相应模型的日期字段4的值相关联 问题是CustomRevisionListener在事务结束时只创建了一次修订。我们尝试使用@Tra
@Configuration
public class CustomRevisionListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
CustomRevisionModel customRevisionEntity = (CustomRevisionModel) revisionEntity;
Object obj = ContextLookup.getCurrentEntity();
if (DealModel.class.isInstance(obj)) {
DealModel model = (DealModel) obj;
customRevisionEntity.setTimestamp(model.getLastStageChangeAt().getTime());
}
}
}
@Entity
@RevisionEntity(CustomRevisionListener.class)
@Table(name = "rev_entity", schema = "audit")
public class CustomRevisionModel extends DefaultRevisionEntity {
}