如何强制Hibernate返回空值而不是null?

mrj*_*per 6 java hibernate

我正在使用Oracle 11GR2,当varchar2字段为空时,在我的Eclipse控制台上System.out.println显示空字段null.我怎样才能让它显示空字符串呢?

Adr*_*hum 6

在getter中做这个技巧很好,但它改变了模型的期望行为.

正如我在评论中引用的那样,Oracle无法区分空字符串和null.如果你确定你使用的所有字符串属性永远不会为null,你可以像这样在hibernate中创建一个拦截器

public class EmptyStringInterceptor extends EmptyInterceptor {
   @Override
   public boolean onLoad(Object entity, 
                         Serializable id, 
                         Object[] state, 
                         String[] propertyNames,
                         Type[] types) {
      for (int i = 0; i < types.length; i++) {
         if (StringType.equals(types[i]) && state[i] == null) {
               state[i] = "";
         }
      }
      return true;
   }
}
Run Code Online (Sandbox Code Playgroud)

您可以参考Hibernate的文档来使用拦截器


PC.*_*PC. 3

你的吸气方法:

public String getVarchar2()
{
    if(this.varchar2==null)
        return "";
    else
        return this.varchar2;
}
Run Code Online (Sandbox Code Playgroud)