Java 是否可以休眠默认空字符串为空字符串

Java 是否可以休眠默认空字符串为空字符串,java,hibernate,orm,db2,castor,Java,Hibernate,Orm,Db2,Castor,在我们的应用程序中,我们从DB2大型机数据库中提取数据。如果数据库字段中有“低值”,hibernate会在对象中发送一个“空”值。即使列定义为“NOTNULL”,也会发生这种情况 当我们对它进行XML解析时,Castor遇到了问题。我想在Hibernate中解决这个问题。此外,所有hibernate hbm文件都是生成的,因此我们不能处理它们(它们会不时地被重新生成) 任何截取所有字符串并将空值替换为“?的方法都可以使用hibernate拦截器,它扩展了EmptyInterceptor,在实际触

在我们的应用程序中,我们从DB2大型机数据库中提取数据。如果数据库字段中有“低值”,hibernate会在对象中发送一个“空”值。即使列定义为“NOTNULL”,也会发生这种情况

当我们对它进行XML解析时,Castor遇到了问题。我想在Hibernate中解决这个问题。此外,所有hibernate hbm文件都是生成的,因此我们不能处理它们(它们会不时地被重新生成)


任何截取所有字符串并将空值替换为

的方法都可以使用hibernate拦截器,它扩展了EmptyInterceptor,在实际触发该查询之前执行您想要执行的操作

这里给出的例子可能会对您有所帮助

  • 创建自定义用户类型以将
    null
    替换为
    “”
  • 将用户类型名称放在通常在
    reveng.xml
    中放置hibernate类型名称的位置
    • 这是我们(归功于和)提出的解决方案。实际上,这是一个大写的,并且被截断(许多抽象方法被删除)

      然后你用这种方式把它连接起来:


      我通过在连接器设置器中处理数据库空值(如advised)来解决同样的问题,方法是使用简单的

      /**
       * Set the value related to the column: NOM
       * @param nom the NOM value
       */
      public void setNom (String nom) {
          this.nom = (nom!= null) ? nom : "" ;
      }
      

      这是我们的第一个想法,也是我们到目前为止可能要实现的想法。我希望能有一个方言或配置的改变,但这可能是我们能得到的最好的。谢谢@我在方言层面上没有意识到类似的事情(这个调整似乎太具体了,不能用方言),但我可能错了。我的感觉是,用户类型是实现这一点的方法。这是很久以前的事了,但这是我们使用的解决方案。谢谢
      /**
       * Set the value related to the column: NOM
       * @param nom the NOM value
       */
      public void setNom (String nom) {
          this.nom = (nom!= null) ? nom : "" ;
      }