繁体   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