4

我正在测试新的 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 的方法来解决这个问题?

4

1 回答 1

2

更新:此错误已在最新的 Hibernate 5.0.0.Beta1中作为 JIRA 问题HHH-8697的一部分得到解决,一旦从4.3.9-SNAPSHOT版本发布,它将在 Hibernate 4.3.9 中

如果您不想升级到 beta 版本,您可以使用一种解决方法:查看JPA/Hibernate map null,它解释了使用 getter 和 setter 来实现您的逻辑。

于 2015-03-18T13:04:50.170 回答