Spring Data JPA:将实体标记为脏以增加@Version

时间:2015-08-14 09:46:41

标签: jpa spring-data spring-data-jpa

我正在寻找一种方法,即使没有属性发生变化,也可以使用Spring Data JPA将实体标记为脏。我的目标是增加实体的版本(根据@LastModifiedBy)并更新我的审核属性(JDOHelper.makeDirty等)。

对于JDO(EntityManager.lock())似乎有类似的东西,甚至可能{{1}},但我找不到任何方法来使用Spring Data JPA。有什么指针吗?

1 个答案:

答案 0 :(得分:3)

我们在Spring Data JPA存储库的超类中使用了这个方法:

@Override
public TYP increaseVersion(TYP typ) {
    em.lock(typ, LockModeType.OPTIMISTIC_FORCE_INCREMENT);
    return typ;
}

这只会增加@Version属性。遗憾的是,Spring Data JPA不会更新审计属性。

更正:

@Autowired
private AuditingHandler auditingHandler;

void someMethod() {
    auditingHandler.markModified(entity);
}

这似乎有效。