我用hibernate hql语句实现查询,我定义的表示日期的字段在数据库中是datetime型的,在程序中是string类型的,现在我要查询出某个日期之间的记录,用hql语句怎么实现呢,需要把持久化类中的string类型改为date型的吗

解决方案 »

  1.   

    不必将string类型改为date型的
    example:
     in DAO
    public List findByTime(String beginTimeStr,String endTimeStr){
      String hql = "from Obj where date between '"+beginTimeStr+"' and '"+endTimeStr+"'"
      return getHibernateTemplate.find(hql)
    }
      

  2.   

    从 Hibernate  Sessions中取一个连接然后直接写SQL语句就OK啦。这样是最好的办法
      

  3.   

    没事别用什么HQL,垃圾的很。
      

  4.   

    那你帮他把HQL写出来呀,大哥。
      

  5.   

    HQL固然好但有些缺陷,有些功能实现不了。例如一些复杂的SQL,例如:多表关联,
      

  6.   

    你用case(parameter as Date)试一下看行不行。
      

  7.   

    数据库中的datetime可以和字符串形式的时间直接比较
    可以使用between  and 
    也可以使用<=  >=hibernate虽然说有些复杂的查询语句不好写
    但并不是你说的那样...垃圾?  你也好意思说?
    你对hibernate懂多少? 就垃圾?
      

  8.   

    这个绝对能实现你的功能。.
    .
    .
    .Session s = 得到Sessions ;
    Connection conn = s.connection();
    Statement stat = conn.createStatement();

    ResultSet result = stat.executeQuery("写你自己的SQL");.
    .
    .
    其它你就自己写了。这是我在一个项目中遇到的一个同样的问题,写HQL语句太复杂,且还写不出来,写了大概2天没弄出来,最后只好用上面的方法了,不过解你燃眉之急。
      

  9.   

    HQL很不错啊,我们的项目一直用这个