我在 HQL 语句中使用datediff 函数,在 WHERE 子句中使用就可以
在查询列中使用就不行,这是怎么回事?有人能解答一下么?
例如: String hql = "SELECT new Customer(customer.name) FROM Customer customer
         WHERE datediff(dy,customer.createDate,current_date()) < 30";
上面这句就可以,
下面这句就不行了:
      String hql = "SELECT new Customer(datediff(dy,customer.createDate,current_date()))
         FROM Customer customer";它会报 NullPointException
以上语句,前提是我已经写了适当的构造函数
求解

解决方案 »

  1.   

    HQL不一定支持这个函数createSqlQuery 用SQL执行试试~
      

  2.   

    什么叫不一定支持这个函数?
    datediff 在 WHERE 子句中是可以使用的,这一点我是可以肯定这个问题,我已经在在程序里用别的方式处理了
    我现在只是希望有人可以解答一下,这个datediff的使用
      

  3.   

    不要认为 HQL 就是 SQL 了!
      

  4.   

    HQL你放在条件是没问题的 但作为查询列的时候是在实体中查询 他不识别可以考虑楼上说的SQL
      

  5.   

    我们项目以后,进行数据库移植的可能性很大,所以我是不太可能采用原生SQL的
      

  6.   

    不存在优化表的问题……
    看来应该是Hibernate 自身的问题了