2013-10-02 208 views
0

如何在兩個日期時間間隔之間使用HQL的正確格式。 我有這樣的SQL在預言:兩個時間間隔之間的HQL

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。

在此先感謝。

+0

該實體是oracle中的一個視圖 – user2683519

+0

結果有何不同? –

+0

有些行在HQL – user2683519

回答

0

如果您看到ORM引擎創建的SQL語句,可能會對您有所幫助。如果你使用Hibernate,你應該使用「<hibernate.showsql>true</hibernate.showsql>」配置參數。檢查你是否發現生成的句子和你自己的句子有任何區別。

如果句子是平等的,檢查你的params,這裏應該是這個問題。