新しい 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準拠の方法はありますか?