2017-04-01 35 views
2

嗨試圖從數據庫中獲取基於日期明智的記錄,我怎麼能在數據庫中實現這個 我有像數據類型datetime和模型類的start_date列我有數據成員像如何在Hibernate查詢語言中使用Date函數

public class Records { 
private Date startDate 
// getters and setters 
} 

想寫查詢類似下面

String hql = "from Records where DATE(startDate)=? "; 
Query query = session.createQuery(hql); 
query.setParameter(0, getStartDate()); 

回答

0

許多事情都不是你的問題清楚。然而,嘗試添加TemporalType.DATE到您的查詢,像:

.. query.setParameter(0, getStartDate(), TemporalType.DATE); 

基本上,JPA需要知道你正在使用過濾日期字段的記錄。如果我可以演示使用更精細的例子:如果你的實體類是記錄和@Id是現場的startDate,則:

@Entity 
@NamedQuery(name="Record.findByStartDate", 
    query="SELECT e FROM Record e" // here returning the whole entity 
    + " WHERE e.startDate = :startDate") 
@Table(name="records") 
public class Record implements Serializable { 

    @Id 
    @Column(name="startDate") 
    @Temporal(TemporalType.DATE) 
    private Date startDate; 
    ... 
} 

與檢索查詢的方法是這樣的:

public Record findByStartDate (Date startDate) { 
    try { 
     return (Record) em.createNamedQuery("Record.findByStartDate") 
     .setParameter("startDate", startDate, TemporalType.DATE) 
     .getSingleResult(); 
    } catch (NoResultException e) { 
     return null; 
    } 
    } 
+0

不,我沒有使用時間數據類型,因爲我有存儲日期和時間 –

+0

「時空」在這裏指的是時間,而不是該字段是暫時的。 – nkmuturi

0

使用此:

String hql = "from Records where DATE(startDate)= DATE(:date) "; 
     Query query = session.createQuery(hql); 
     query.setParameter("date", new Date()); 
     System.out.println(query.list().size()); 
相關問題