我使用Eclipselink JPA,我有一个带有时间戳字段的实体,注释了@Version por optimistic locking。
默认情况下,这会将entitymanager设置为使用数据库时间,因此,如果我必须进行批量更新,那么每次想要插入时,它都会查询数据库的时间,因此无法正常工作。 / p>
如何更改TimestampLockingPolicy以使用LOCAL_TIME?
类org.eclipse.persistence.descriptors.TimestampLockingPolicy.class有一个公共方法useLocalTime()但我不知道如何使用,或者我应该从哪里调用它。
答案 0 :(得分:1)
找到答案:
首先创建一个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();
}
}
}
然后使用
注释具有@Version的实体@Customizer(LocalDateTimeCustomizer.class)