关于Hibernate操作数据库为空(数值类型)以及引起的问题的一点点总结

来源:互联网 发布:股票收益数据挖掘 编辑:程序博客网 时间:2024/06/05 23:54

 

   今天算是第一次写博客吧,呵呵,老早就想写点什么东西,可是不知道该从哪里写?本来自己的技术水平相当有限,倒不是怪自己工作时间有多短,呵呵,其实这个也是一个是相当的原因.而且最主要的是,自己虽然总结了不少,不过总体看起来,就是一些小问题,跟一些大牛来说.这个根本不是什么问题.也不值得一提.我想大伙都有这个过程的吧,所以还是来说说.呵呵,相当与自己成长过程的一点点总结吧.(也许哪一天,自己就不知道干什么去了)

   今天用Hibernate+Spring+Ext+Oracle做了点东西,呵呵.本来就是做好的一个公司项目,但是最近发现了不少问题,所以交过来改一下,如果按照正常情况下增加,删除,修改,没有问题,可是不能不照顾特殊啊.其中遇到的问题很多,这里也不一一列出来了,就来说说.关于Hibernate对于空的(主要是数值类型.)的操作

   其一,用Oracle建立的数据表当中,有number类型可以为空(null),这个时候,Hibernate执行增加(add),修改(update)操作就会受到影响了.其实就是一个类型创建问题,如果都用Integer,一切问题解决.其中包含:第一,hbm配置映射文件.创建的number类型为java.lang.Integer,如果你在save或者是update,或者是PO(其实这个叫法对我虽然不是陌生,但是总觉得别扭,其实就是hbm映射的数据对象)里面的对应字段,都用Integer,一切搞定,对于,插入,修改,null(空)字段,没有问题,

如若不然,有可能会报

  1. Could not perform validation checks for component as the class com.radiantek.sysconfig.vo.OuterIntf
  2. Tbl was not found
  3. 或者是
  4. exception setting property value with CGLIB

的错误,有人说,是数据库为空造成的,呵呵,的确如此,不过该数据库,不是大家所想要的,还是按照上面的,修改程序,满足用户,算是根本.

   其二,这个是由第一个造成的,网上找了很久,没有得到所谓自己想要的结果,算了,还是自己用其他的方法先替代吧.

   问题:

  1. 由于Hibernate增加,修改,都是可以操作null,但是取得值的时候,为什么总是0呢?
  2. 这个时候,虽然自己第一时间还是想到了,算了,跟以前一样,页面处理一下吧,也就是这里用Ext的载入数据的时候用
  3. renderer调用一个函数处理一下就行了,等于0,页面输出空,这个相当容易,
  4. 对于类似的,不用Ext用struts?jsp?php?当让不在话下,也就是简单的一两句话就能解决了,
  5. 但是这个不是我想要的答案,对于Hibernate这里获得的值填充0,我百思不得其解,我不知道有其他的高人解决过没有,或者是自己想错了?难道是Ext得到的时候才是0?

    这个可能性应该不会,设置断点来处理Hibernate得到的list值.原来这个时候得到的list还不是具体的数值,还只是上面的一个VO对象.然后再经过一到转换,也就是通过JSON,

jsonObj=JSONArray.fromObject(list);然后到页面的时候出现了0,这个时候,我想自己的学习过程也是不牢固的,到这里,我算是花了差不多两个多点小时,呵呵,就到此位置了.

    因为这个时候,就去查API吧,一看JSONArray.java果然看到了  

  1. /**
  2.      * Make a prettyprinted JSON text of this JSONArray.
  3.      * Warning: This method assumes that the data structure is acyclical.
  4.      * @param indentFactor The number of spaces to add to each level of
  5.      *  indentation.
  6.      * @return a printable, displayable, transmittable
  7.      *  representation of the object, beginning
  8.      *  with <code>[</code> <small>(left bracket)</small> and ending
  9.      *  with <code>]</code> <small>(right bracket)</small>.
  10.      * @throws JSONException
  11.      */
  12.     public String toString(int indentFactor) throws JSONException {
  13.         return toString(indentFactor, 0);
  14.     }

    这个时候可以安心了,过程也就这样暂时告一段落吧.其实是一个简单问题,呵呵,第一次还是写全了.虽然有点让人迷迷糊糊,不过总算是从头到位的写了一下Hibernate关于空数值操作引发的一系列问题.

 

 

这里就总结一下吧.

 

第一:Hibernate操作空数值类型,注意下.

第二:是否有其他因素引起的一系列原因让你不的其解.

 

不敢说什么解决方案,只有自己解决自己的问题的方案才是自己认为是解决方案,所以这里不敢给什么建议,今天第一次,呵呵,谢谢大家.

       其实过程当中有很多问题没有能够写得清楚,比如创建过程,解决过程,只是针对问题说了一些看法,不尽完善,但是工作工程比较大,等有时间写吧.