Hibernate的findById方法失效

      这两天在做一个SSH三大框架的整合练习,数据库用的是Oracle,就是一个很简单的登录案例,却记我纠结了两天。搭建三大框架没问题,一下子搞定咯。但是处理业务的时候,发现Hibernate自动生成的Dao类中的findById()和findByExample()方法都用不了。

     就是我数据库有数据,Hibernate生成的查询语句放到数据库编辑器中查是可以查到数据的,但在后台程序里却始终是null。一时没想明白....

  一开始以为是三大框架的配置文件有问题,可经过仔细检查、调试并没发现有任何异常。更加奇怪的是save()方法却能用,那就可以断定不是配置文件也不是事务的问题。后面我又自己写了BaseDao类,用通用的HQL去查询还是没任何数据,但是查询所有却没问题,这时发现Hibernate生成的查询所有方法findAll()也没问题。这会是什么原因呢??

      最后查看建表语句时,无意中发现字符串类型的字段都是char类型,当时就猜会不会跟这有关,既然想到了,那就试试呗,结果你猜怎么咯。意外发生了,还真是这原因,把原来的char类型换成varchar2就没问题咯。无语....

      究其原理还不得而知,忘看到的朋友或知道的朋友不吝赐教....

posted @ 2012-03-08 23:56  跳动的音符^Web  阅读(1382)  评论(0编辑  收藏  举报