2017-12-27 1 views
0

저는 Eclipselink JPA를 사용하고 있습니다. 저는 @Version por 낙관적 잠금으로 주석 된 타임 스탬프 필드가있는 엔티티를 가지고 있습니다.로컬 시간을 사용하도록 OptimisticLockPolicy를 변경하십시오.

기본적으로 엔티티 관리자가 데이터베이스 시간을 사용하도록 설정하므로 일괄 업데이트를 수행해야하는 경우 삽입을 수행 할 때마다 데이터베이스를 쿼리 할 때 제대로 작동하지 않습니다.

어떻게 LOCAL_TIME을 (를) 사용하도록 TimestampLockingPolicy를 변경할 수 있습니까?

클래스 org.eclipse.persistence.descriptors.TimestampLockingPolicy.class에는 공용 메서드 useLocalTime()이 있지만 사용 방법을 알지 못하거나 어디에서 호출해야하는지 모릅니다.

답변

1

답을 찾았습니다

첫째는

@Customizer(LocalDateTimeCustomizer.class) 
와 @Version이있는 엔티티에 주석을 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(); 
     } 
    } 
} 

을 만들 수 있습니다

관련 문제