2017-12-27 4 views
0

Ich benutze Eclipselink JPA, ich habe eine Entity mit einem Timestamp-Feld, das mit @Version por optimistic locking versehen ist.ändere die OptimisticLockPolicy, um local-time zu verwenden

Standardmäßig legt dies fest, dass der Entitymanager die Datenbankzeit verwendet. Wenn ich also eine Stapelaktualisierung durchführen muss, funktioniert sie nicht ordnungsgemäß, da die Datenbank jedes Mal, wenn sie eine Einfügung durchführen möchte, die Zeit abfragt.

Wie kann ich die TimestampLockingPolicy ändern, um LOCAL_TIME zu verwenden?

Die Klasse org.eclipse.persistence.descriptors.TimestampLockingPolicy.class hat eine öffentliche Methode useLocalTime(), aber ich weiß nicht, wie zu verwenden oder, von wo ich es nennen soll.

Antwort

1

die Antwort gefunden:

erste lässt

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

dann mit Anmerkungen versehen, die Unternehmen eine DescriptorCustomizer erstellen, die die @Version mit

@Customizer(LocalDateTimeCustomizer.class) 
hat
Verwandte Themen