【问题标题】:How to compare timestamp fields in HQL?如何比较 HQL 中的时间戳字段?
【发布时间】:2018-05-27 21:58:15
【问题描述】:

我在表中有一个 Java.Util.Timestamp 列,我无法与 WHERE 子句中的变量进行比较。使用此代码:

        // Using Calendar to convert Java Date 'horarioEliminar' to Sql Timestamp 't'
        Calendar cal = Calendar.getInstance();
        cal.setTime(horarioEliminar);
        cal.set(Calendar.MILLISECOND, 0);

        Timestamp t = new java.sql.Timestamp(cal.getTimeInMillis());

        String horQ = "FROM Academia.Horarios WHERE horario ="+ t;
        horario = (Horarios) session.createQuery(horQ).uniqueResult();

我遇到了一个异常:

错误 [http-nio-8080-exec-873] org.hibernate.hql.internal.ast.ErrorCounter.reportError 行 1:57:意外令牌:10

但我检查了 System.out.println(t) 结果与存储在 horario 列中的值匹配。如何正确比较这两个时间戳?

【问题讨论】:

    标签: mysql sql hibernate


    【解决方案1】:

    尝试将时间戳设置为查询参数,如下所示:

     Timestamp t = new java.sql.Timestamp(cal.getTimeInMillis());
    
     String horQ = "FROM Academia.Horarios WHERE horario = :ts";
     horario = (Horarios) session.createQuery(horQ).setParameter("ts", t).uniqueResult();
    

    【讨论】:

      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 2012-12-22
      • 2019-09-18
      • 2011-12-28
      • 2019-07-30
      • 2012-05-16
      • 2012-09-15
      • 2021-03-16
      相关资源
      最近更新 更多