Search code examples
jpaeclipselink

How can I use ObjectTypeConverter to manage null values?


I have this converter to convert a Boolean.class field from the entity to a VARCHAR(1) in Oracle DB:

@ObjectTypeConverter(name = "SNtoBoolConverter",
    dataType = java.lang.String.class,
    objectType = java.lang.Boolean.class,
    conversionValues = {
        @ConversionValue(dataValue = "S", objectValue = "true"),
        @ConversionValue(dataValue = "N", objectValue = "false"),
    }

) Is there a way to convert null values to a character? Thanks!


Solution

  • No, you'll need to use a custom converter. Something like:

      @Converter(name="SNtoBoolConverter",
           converterClass=org.myorg.converters.SNtoBoolConverter.class)
      Boolean yourProperty;
    
    
    public class SNtoBoolConverter implements org.eclipse.persistence.mappings.converters.Converter {
    
      public Object convertDataValueToObjectValue(Object dataValue, Session session) {
        if ("S".equals(dataValue))
          return Boolean.TRUE;
        if ("N".equals(dataValue))
          return Boolean.FALSE;
    
        return null;
      }
    
      public Object convertObjectValueToDataValue(Object value, Session session) {
        if (null == value)
          return null;
        if (value == Boolean.TRUE){
          return "S"
        } else {
          return "N"
        }
      }
      public void initialize(DatabaseMapping mapping, Session session){}
      public boolean isMutable() {return false;}
    }