java - 如何强制 Hibernate 返回一个空值而不是 null?

标签 java hibernate

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

最佳答案

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

可以引用Hibernate's document for use of interceptor

关于java - 如何强制 Hibernate 返回一个空值而不是 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251767/

相关文章:

java - SonarQube 无法分析文件 : bridge method not marked as synthetic

构造函数中的 Java 可重写调用

java - 非法格式转换问题

java - 如何使用Hibernate注解

java.lang.NoSuchFieldError : name at run time in hibernate project 错误

hibernate - 无法执行 DELETE 时返回的正确 http 状态代码是什么?

java - 计算二进制数中最大的连续 1

java - 从 ArrayList 添加/删除值以获得唯一值

java - 您可以使用整数值而不是 EnumType.STRING 或 ORDINAL 来保存枚举吗?

java - 如何将类型化查询转换为条件生成器对象?