SSH实战 · 用spring框架下的hibernatetemplate的get方法出现的问题


用get方法查询:
      return this.getHibernateTemplate().get(Product.class, pid);
出现错误为:id to load is required for loading···
    
     很多人说是数据库有字段设置了not null,所以在更新数据的时候由于有些字段是null,所以报错。仔细查看了数据库,并没有not null的设置。其实原因出在get(Product.class,pid)这个方法上。
    因为参数id在Dao中是序列化字段,但是在执行SQL查询的时候并没有给id赋值,所以在执行get()方法的时候就直接是null了。
    修改bug :除了使用hibernatetemplate的get()方法进行数据库查询,还可以使用find()方法直接进行HQL查询,但是fing返回的是一个字符串,事实上是一个ArrayList串。所以在进行fing()操作的时候,应该要返回List类型的POJO类泛型结果,不然就会出现HTTP Status 500 -  Java.util.ArrayList的错误了。
代码修改如下:
          String hql = "from Product where pid=?" ;
          List < Product > list = this. getHibernateTemplate () . find ( hql , pid ) ;
           if ( list != null && list . size () > 0 ){
               return list . get ( 0 ) ;
           }
           return null;
 
 
 
 
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM