求教一个问题:小弟用spring+hibernate整合开发 ,使用getHibernateTemplate进行查询时遇到问题,目前的情况是
getHibernateTemplate().save delelte update 这些都没有问题,但是
getHibernateTemplate().get(Book.class, "100");这个查询不报异常,但查询结果为null,数据库没问题,id为100的数据也存在,我将其改为getHibernateTemplate().find("from Book as bk where bk.id='100'"); 查询没问题,能查询来,然后
我又用getHibernateTemplate().find("from Book as bk where bk.id=?","100");查询也是null也就是涉及参数的查询都为null,没参数的没问题。不知道怎么回事?是否与缓存有关系呢?愿各位前辈不吝赐教! 

解决方案 »

  1.   

    把引号去掉看看
    get(Book.class,100)
      

  2.   

    我的id是用的string类型的uuid
    Book book=(Book)this.getHibernateTemplate().get(Book.class, "402881e42cefae72012cefb8dfa00001");
      

  3.   

    getHibernateTemplate().get(Book.class, new Long(100));
      

  4.   

    String param = "100";getHibernateTemplate().find("from Book as bk where bk.id=?", param); 
      

  5.   

    楼上的方法我也试过了,这个是不行的,getHibernateTemplate().find("from Book as bk where bk.id='100'"); 这样写可以  呵呵 奇怪啊 
      

  6.   

    你用session来做 肯定没问题 
      

  7.   

    楼上的方法我也试过了,这个是不行的,getHibernateTemplate().find("from Book as bk where bk.id='100'"); 这样写可以 呵呵 奇怪啊 你这样肯定是可以的啊 
    你上面那样做不行是因为你的id是由自己分配的 而不是数据库的索引你这样做的话 你的ID就有业务含义 这样做实在是不妥啊 ,绑定的太死啦 。
      

  8.   

    楼上的我没太明白
    getHibernateTemplate().find("from Book as bk where bk.id='100'"); 
    getHibernateTemplate().find("from Book as bk where bk.id=?","100");
    这两种写法,前者正常,后者结果返回null,这里的100只是一个数字代表,我实际开发用的是uuid,hibernate自动生成的,表里的id是没问题的
    目前尚未解决此问题[我个人感觉是和两种find的加载模式有关系,只是不清楚问题出在具体哪里]
      

  9.   

    问题有了点进展:
    List list=this.getHibernateTemplate().find("from BookInfor as bk where bk.id=?","402881e62d4c40ff012d4c4363d80001"); 返回list的size为0
    this.getHibernateTemplate().find("from BookInfor as bk where bk.name=?","zhangsan"); 返回list的size为1id为402881e62d4c40ff012d4c4363d80001和name为zhangsan是一条记录
    也就是说返回null的问题只是出在了用id查询上,推测是id有问题
    id我使用的是uuid
    <id name="id" ><generator class="uuid"/></id> 数据库里id是自动生成的,设定了主键,这些没问题
      

  10.   

    也分享一下 怎么回事 我也遇到这个情况啦 包括delete(xx)也删除不了这个对象啊