【发布时间】:2014-05-14 02:17:42
【问题描述】:
我在数据库表的列中有一个变量类型时间。 我如何将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;
}
}
【问题讨论】:
-
准备好了,我更新了帖子@oshingc
-
尝试在您的实体中使用@Temporal 注解。
-
不确定这是否可行,但请尝试将您的参数设置为
java.sql.Time变量。
标签: java sql-server hibernate hql