5

I'm testing the new JPA 2.1 Type Converters. I want to avoid NULL String values to be stored in a legacy database as they are not allowed. So I defined the following converter:

@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;
        }
    }

}  

String properties should be converted to a space character if they are NULL, but the converter method's are not executed when the properties are NULL.
I'm trying hibernate-jpa-2.1-api (1.0.0.Final) and hibernate-entitymanager (4.3.6.Final).
Is there any JPA 2.1 compliant way to get around this?

Manuel Z
  • 51
  • 1
  • 2
  • I've updated my answer to reflect the latest status of this issue at Hibernate JIRA. Feel free to accept the answer @Manuel Z – Driss Amri Jun 05 '15 at 14:27

1 Answers1

2

UPDATE: this bug has been resolved in the latest Hibernate 5.0.0.Beta1 as part of JIRA issue HHH-8697 and will be in Hibernate 4.3.9 as soon as it is released from the 4.3.9-SNAPSHOT version

If you don't want to upgrade to the beta version, you can use a workaround: take a look at JPA/Hibernate map null which explains using the getter and setter to implement your logic.

Community
  • 1
  • 1
Driss Amri
  • 1,805
  • 2
  • 20
  • 28