Jpa 将OptimisticLockPolicy更改为使用本地时间

Jpa 将OptimisticLockPolicy更改为使用本地时间,jpa,eclipselink,Jpa,Eclipselink,我使用的是Eclipselink JPA,我有一个带有时间戳字段的实体,该字段用@Version por乐观锁定注释 默认情况下,这会将entitymanager设置为使用数据库时间,因此,如果我必须执行批处理更新,它将无法正常工作,因为它会在每次执行插入操作时查询数据库的时间 如何更改TimestampLockingPolicy以使用本地时间 org.eclipse.persistence.descriptors.TimestampLockingPolicy.class类有一个公共方法useL

我使用的是Eclipselink JPA,我有一个带有时间戳字段的实体,该字段用@Version por乐观锁定注释

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

如何更改TimestampLockingPolicy以使用本地时间

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

找到了答案:

首先让我们创建一个描述符

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();
        }
    }
}
然后用注释注释具有@Version的实体

@Customizer(LocalDateTimeCustomizer.class)