我们的应用是一个网页游戏服务端,用Hibernate查询一批数据的时候,结果有时候会只有1条,实际应该是多条记录。改用jdbc查询,每次都是多条记录,好几个查询的地方都出现这个问题,求高手指点!

解决方案 »

  1.   

    代码如下:
    public List<JuDian> getJuDianLatestInfo(){
    String hql= "from JuDian where startTime >= ?";
    return (List<JuDian>)getHibernateTemplate().find(hql, BuLuoService.getJudianStartTime());
    }
      

  2.   


    语句也没什么毛病、会不会是日期处理的问题、你的BuLuoService.getJudianStartTime()返回的类型是什么的?startTime 在数据库中的类型是什么?
      

  3.   

    startTime 在数据类型。。很重要。。是不是string类型。。不是datetime类型
      

  4.   

    谢谢楼上各位的回答,java程序里面的startTime是 java.util.Date类型,数据库里面是datetime类型(mysql),代码如下:
    public static Date getJudianStartTime(){
    Calendar startTime = Calendar.getInstance();
    startTime.set(Calendar.HOUR_OF_DAY, 5);
    startTime.set(Calendar.MINUTE, 0);
    startTime.set(Calendar.SECOND, 0);
    startTime.set(Calendar.MILLISECOND, 0);
    startTime.add(Calendar.DAY_OF_MONTH, -6);

    return startTime.getTime();
    }
      

  5.   

    可以试试把hql的where条件去掉,还会不会返回1条?不是的话可以确定是where条件的问题
      

  6.   

    你检查一下 .hbm中的类型是不是错了 默认的好像不是datatime
      

  7.   

    或者只能去掉where条件了 在试试
      

  8.   

    可不可以在hibernate查询你觉得有问题当时 换成hql对应的sql去数据库直接查?
      

  9.   

    感觉应该是你的代码有点问题,感觉那个List接受存储数据的时候不是添加,而是写成替换了。
    你把那一段代码发出来看一下。
      

  10.   

    试试将(List<JuDian>)getHibernateTemplate().find(hql, BuLuoService.getJudianStartTime())中的BuLuoService.getJudianStartTime()转换为java.sql.Date类型