java - 数据类型 datetime 和 time 在大于或等于运算符中不兼容

标签 java sql-server hibernate hql

我在数据库表的列中有一个变量类型时间。 我如何将 java 中的这个值与这个字段进行比较我的意思是我可以使用日期,gregoriancalendar? 我已经试过了,我仍然有这个消息,请有人给我一个建议

Date d2 = new Date();                      // timestamp now
Calendar cal = Calendar.getInstance();       // get calendar instance
cal.setTime(d2);                           // set cal to date
cal.set(Calendar.HOUR_OF_DAY, 10);            // set hour to midnight
cal.set(Calendar.MINUTE, 30);                 // set minute in hour
cal.set(Calendar.SECOND, 0);                 // set second in minute
cal.set(Calendar.MILLISECOND, 0);            // set millis in second
Date d3 = cal.getTime();   

@SuppressWarnings("unchecked")
List<Asistencia> list = (List<Asistencia>) sessionFactory
.getCurrentSession()
.createQuery(
        "select new Asistencia( asis.idAsistencia,"
        + "asis.horaInicio, asis.horaFin) "
        + "from Asistencia asis "
        + "where :hour >= asis.horaInicio and :hour <= asis.horaFin")

.setParameter("hour", d3).list();

我也用过

where :hour between asis.horaInicio and asis.horaFin

消息是一样的:

ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - The data types datetime and time are incompatible in the greater than or equal to operator.

数据类型 datetime 和 time 在大于或等于运算符中不兼容。

这里是 Asistencia 类:

public class Asistencia implements java.io.Serializable {

private static final long serialVersionUID = 1L;
private long idAsistencia;
    private Date horaInicio;
    private Date horaFin;
    private int idAula;
    private int idCurso;
    private int idPeriodo;
    private Date fecha;

    public Asistencia (){
    }
    public Asistencia (long idAsistencia, Date horaInicio, Date horaFin){
          this.idAsistencia
          this.horaInicio = horaInicio;
          this.horaFin = horaFin;
    }

最佳答案

似乎唯一的问题是我使用的是 SQL Server 2008,并且有必要在连接属性中设置 sendTimeAsDateTime=false。

这里有一个类似的问题。 comparing time in sql server through hibernate

关于java - 数据类型 datetime 和 time 在大于或等于运算符中不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22817540/

相关文章:

java - 如何从 hibernate 提供者那里知道底层数据库名称

java - 当在字段上设置默认值时,JPA/Hibernate 插入 NULL

java - 从 ButtonGroup() 返回值

Java Rest Api 返回 404

java - 使用 Spring StoredProcedure 类调用函数

sql - 使用自连接创建索引 View

sql-server - 在表之间移动数据并生成旧标识值到新标识值的映射的最佳方法

sql-server - sql server表的部分值约束

java - 像半球一样在java中打印图案

java - 升级硬盘后重新安装 Eclipse 的问题