【问题标题】:HQL between two time interval两个时间间隔之间的 HQL
【发布时间】:2013-10-08 08:50:01
【问题描述】:

在两个日期时间间隔之间使用 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')

我的总部:

领域:

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。

提前致谢。

【问题讨论】:

  • 实体是oracle中的一个视图
  • 结果有何不同?
  • 有些行在列表中用 HQL 重复

标签: hibernate hql criteria


【解决方案1】:

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

如果句子相等,请检查您的参数,这应该是问题所在。

【讨论】:

    猜你喜欢
    • 2015-02-24
    • 2014-07-12
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-01
    • 2021-08-21
    相关资源
    最近更新 更多