HQL在两个时间间隔之间

时间:2013-10-02 02:13:22

标签: hibernate hql criteria

在2个日期时间间隔内使用HQL的正确格式如何。  我在 oracle:

中有这个SQL
select * 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。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您看到ORM引擎创建的SQL语句,也许可以帮助您。如果你使用Hibernate,你应该使用“<hibernate.showsql>true</hibernate.showsql>”配置参数。检查生成的句子和你自己的句子之间是否有任何区别。

如果句子等于,请检查你的参数,这应该是问题。

相关问题