将OptimisticLockPolicy更改为使用本地时间

我正在使用Eclipselink JPA,我有一个带有@Version和乐观锁定注解的时间戳字段的实体。将OptimisticLockPolicy更改为使用本地时间

默认情况下,这会将entitymanager设置为使用数据库时间,因此,如果必须执行批量更新,则它无法正常工作,因为每次要插入时都会查询数据库的时间。

如何更改TimestampLockingPolicy以使用LOCAL_TIME?

该类org.eclipse.persistence.descriptors.TimestampLockingPolicy.class有一个公共方法useLocalTime(),但我不知道如何使用或从哪里应该叫它。

回答:

找到了答案:

首先让我们创建一个DescriptorCustomizer

public class LocalDateTimeCustomizer implements DescriptorCustomizer { 

@Override

public void customize(ClassDescriptor descriptor) throws Exception {

OptimisticLockingPolicy policy = descriptor.getOptimisticLockingPolicy();

if (policy instanceof TimestampLockingPolicy) {

TimestampLockingPolicy p = (TimestampLockingPolicy) policy;

p.useLocalTime();

}

}

}

则标注具有与

@Customizer(LocalDateTimeCustomizer.class) 

的@Version实体

以上是 将OptimisticLockPolicy更改为使用本地时间 的全部内容, 来源链接: utcz.com/qa/267071.html

回到顶部