Jpa 将OptimisticLockPolicy更改为使用本地时间
我使用的是Eclipselink JPA,我有一个带有时间戳字段的实体,该字段用@Version por乐观锁定注释 默认情况下,这会将entitymanager设置为使用数据库时间,因此,如果我必须执行批处理更新,它将无法正常工作,因为它会在每次执行插入操作时查询数据库的时间 如何更改TimestampLockingPolicy以使用本地时间 org.eclipse.persistence.descriptors.TimestampLockingPolicy.class类有一个公共方法useLocalTime(),但我不知道如何使用,或者从何处调用它。找到了答案: 首先让我们创建一个描述符Jpa 将OptimisticLockPolicy更改为使用本地时间,jpa,eclipselink,Jpa,Eclipselink,我使用的是Eclipselink JPA,我有一个带有时间戳字段的实体,该字段用@Version por乐观锁定注释 默认情况下,这会将entitymanager设置为使用数据库时间,因此,如果我必须执行批处理更新,它将无法正常工作,因为它会在每次执行插入操作时查询数据库的时间 如何更改TimestampLockingPolicy以使用本地时间 org.eclipse.persistence.descriptors.TimestampLockingPolicy.class类有一个公共方法useL
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)