blob: a0705361a8f4c2c8062a275b437587cbd440f831 [file] [log] [blame]
package org.eclipse.osbp.jpa.services.history;
import org.eclipse.persistence.config.DescriptorCustomizer;
import org.eclipse.persistence.descriptors.ClassDescriptor;
import org.eclipse.persistence.exceptions.OptimisticLockException;
import org.eclipse.persistence.history.HistoryPolicy;
import org.eclipse.persistence.queries.ModifyQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HistoryCustomizer implements DescriptorCustomizer {
static final Logger LOGGER = LoggerFactory.getLogger(HistoryCustomizer.class);
@SuppressWarnings("serial")
public void customize(ClassDescriptor descriptor) {
HistoryPolicy policy = new HistoryPolicy(){
@Override
public void logicalDelete(ModifyQuery writeQuery, boolean isUpdate, boolean isShallow) {
try {
super.logicalDelete(writeQuery, isUpdate, isShallow);
} catch (OptimisticLockException e) {
LOGGER.warn("Workaround for bug. If postUpdate is called, but history does not exist, this exception occurs. {}", e);
}
}
};
policy.addStartFieldName("HIST__START_DATE");
policy.addEndFieldName("HIST__END_DATE");
policy.addHistoryTableName(descriptor.getTableName(), descriptor.getTableName() + "_HIST");
descriptor.setHistoryPolicy(policy);
}
}