在2个日期时间间隔内使用HQL的正确格式如何。 我在 oracle:
中有这个SQLselect * from vw_diariorecauda where ts_crea between TO_DATE
('01/10/2013 00:00:00','dd/MM/yyyy hh24:mi:ss')
and TO_DATE ('01/10/2013 23:59:59', 'dd/MM/yyyy hh24:mi:ss')
我的HQl:
字段:
private Date tsCrea;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "TS_CREA")
public Date getTsCrea() {
return this.tsCrea;
}
DAO:
public List<VwDiariorecauda> buscarFecha(Date fecha) {
log.trace(fecha);
Calendar c = Calendar.getInstance();
c.setTime(fecha);
c.add(Calendar.HOUR, 0);
c.add(Calendar.MINUTE, 0);
c.add(Calendar.SECOND, 0);
Date fInicio = c.getTime();
c.add(Calendar.HOUR, 23);
c.add(Calendar.MINUTE, 59);
c.add(Calendar.SECOND, 59);
Date fFin = c.getTime();
Session session = sessionFactory.getCurrentSession();
Query query=session.createQuery("FROM VwDiariorecauda WHERE
tsCrea BETWEEN :hora1 AND :hora2").setTimestamp("hora1",fInicio).
setTimestamp("hora2",fFin);
return query.list();
hql运行良好,但结果与简单的sql不同。 我该如何改进这个hql。
提前致谢。
答案 0 :(得分:0)
如果您看到ORM引擎创建的SQL语句,也许可以帮助您。如果你使用Hibernate,你应该使用“<hibernate.showsql>true</hibernate.showsql>
”配置参数。检查生成的句子和你自己的句子之间是否有任何区别。
如果句子等于,请检查你的参数,这应该是问题。