2017-12-27 1779 views
0

我正在使用Eclipselink JPA,我有一個帶有@Version和樂觀鎖定註解的時間戳字段的實體。將OptimisticLockPolicy更改爲使用本地時間

默認情況下,這會將entitymanager設置爲使用數據庫時間,因此,如果必須執行批量更新,則它無法正常工作,因爲每次要插入時都會查詢數據庫的時間。

如何更改TimestampLockingPolicy以使用LOCAL_TIME?

該類org.eclipse.persistence.descriptors.TimestampLockingPolicy.class有一個公共方法useLocalTime(),但我不知道如何使用或從哪裏應該叫它。

回答

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(); 
     } 
    } 
} 

則標註具有與

@Customizer(LocalDateTimeCustomizer.class) 
的@Version實體
相關問題