В моей модели данных есть много объектов, атрибуты которых сопоставляются с перечислениями следующим образом:
@Enumerated(EnumType.STRING)
private MySpecialEnum enumValue;
MySpecialEnum определяет некоторые фиксированные значения. Сопоставление работает нормально, и если база данных содержит NULL-значение для столбца, я получаю NULL и в атрибуте enumValue.
Проблема в том, что мой внутренний модуль (на который я не имею никакого влияния) использует пробелы в CHAR-столбцах, чтобы определить, что значение не установлено. Поэтому я получаю IllegalArgumentException вместо NULL-значения.
Итак, мой вопрос: существует ли JPA-событие, где я могу изменить значение, считанное из базы данных, перед сопоставлением с атрибутом enum?
Для доступа на запись есть @PrePersist, где я могу изменить пустые значения на пробелы. Я знаю, что есть событие @ PostLoad, но оно обрабатывается после сопоставления.
Кстати: я использую OpenJpa, поставляемый в составе WebSphere Application Server.