Я тестирую новые преобразователи типа JPA 2.1. Я хочу, чтобы значения NULL String не сохранялись в устаревшей базе данных, поскольку они не разрешены. Поэтому я определил следующий конвертер:JPA 2.1 Тип Преобразователь не получает выполнение по значениям NULL
@Converter(autoApply=true)
public class CString implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String str) {
if(str == null || str.length() == 0) {
return " ";
} else {
return str;
}
}
@Override
public String convertToEntityAttribute(String str) {
if(str == null || str.length() == 0 || str.equals(" ")) {
return null;
} else {
return str;
}
}
}
Свойство строки должно быть преобразовано в символ пробела, если они являются NULL, но метод преобразователя не выполняется, когда свойства NULL.
Я пытаюсь hibernate-jpa-2.1-api (1.0.0.Final) и hibernate-entitymanager (4.3.6.Final).
Есть ли какой-либо JPA 2.1-совместимый способ обойти это?
Я обновил свой ответ, чтобы отразить последний статус этой проблемы в Hibernate JIRA. Не стесняйтесь принять ответ @Manuel Z –