簡體   English   中英

在日期字段上進行時間范圍搜索的休眠條件

[英]hibernate criteria for a time range search on a Date field

我正在使用Oracle 10g,Hibernate 3,springMVC,jqgrid。 我在ORACLE中有一些日期字段,其映射如下

@Temporal(TemporalType.DATE)
@Column(name = "DOC_CREATION_DATE", length = 7,insertable=true,updatable=false)
public Date getDocCreationDate() {
    return this.docCreationDate;
}

在我的網格中,我使用jqueryCalendar過濾了日期,一切都很好。 現在,我有一個來自客戶端的新請求,該請求將顯示documentCreation的時間,並且他們還希望能夠按時間范圍進行過濾。 例如:

查找在6:am和7:pm之間創建的所有記錄,查找在6:am創建的所有記錄。

我已經嘗試使用格式化日期字段

@Temporal(TemporalType.TIMESTAMP)

那不是他們想要的

是否有其他解決此問題的方法,如何實施此方法的好主意也非常受歡迎。

事情是我需要使用相同的映射的字段 (使用jqueryCalendar 12/01/2012)在jqGrid的一列查詢正規日期,並添加另一列相同的映射的字段的時間部分一旦這樣做了我需要查詢(休眠條件)時間列一段時間 ,類似於以下模擬:

...
 criteria.add(Restrictions.ge("docCreationDate.mappedFieldTimePart",6AM ));

謝謝你的幫助

該列的類型映射到時間,因此您必須將其值與時間進行比較:

Time sixAM = Time.valueOf("06:00:00");
criteria.add(Restrictions.ge("docCreationDate.mappedFieldTimePart", sixAM));

您還可以使用常規日期:

Date sixAM = new SimpleDateFormat("HH:mm").parse("06:00");
criteria.add(Restrictions.ge("docCreationDate.mappedFieldTimePart", sixAM));

您必須更改@Temporal批注以使用TemporalType.TIMESTAMP或添加另一個字段並使用TemporalType.TIME對其進行批注。 Hibernate使用@Temporal批注來確定是否將字段像java.sql.Timestampjava.util.Date那樣對待,並將時間設置為OFF(設置為午夜或00h 00m 00.0s)。 這使開發人員可以在其應用程序java.util.Date任何地方使用java.util.Date ,而不必擔心Timestamp類(它已從我們的大多數代碼庫中淘汰了)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM