我正在使用 Oracle 10g,Hibernate 3,springMVC,jqgrid。我在ORACLE中有一些 Date 字段,其映射如下
@Temporal(TemporalType.DATE)
@Column(name = "DOC_CREATION_DATE", length = 7,insertable=true,updatable=false)
public Date getDocCreationDate() {
return this.docCreationDate;
}
在我的网格中,我使用jqueryCalendar过滤日期,一切都很好。 现在我有来自客户的新请求,即显示 documentCreation 的时间,他们也希望能够按时过滤范围。例如:
查找在上午6点和下午7点之间创建的所有记录,查找在上午6点创建的所有记录。
我已尝试使用
格式化日期字段@Temporal(TemporalType.TIMESTAMP)
这不是他们想要的
有没有其他方法解决这个问题,如何实现这一点的任何好主意都是非常受欢迎的。
问题是我需要使用相同的映射字段在Jqgrid的一列中查询常规日期( 12/01/2012 使用jqueryCalendar)和为完成相同的映射字段的时间部分添加另一列我需要查询 (休眠标准) 的时间列时间范围 像这样的模拟:
...
criteria.add(Restrictions.ge("docCreationDate.mappedFieldTimePart",6AM ));
谢谢你的帮助
答案 0 :(得分:3)
列的类型映射到Time,因此您必须将其值与Time:
进行比较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));
答案 1 :(得分:1)
您必须更改@Temporal
注释以使用TemporalType.TIMESTAMP
或添加其他字段并使用TemporalType.TIME
进行注释。 Hibernate使用@Temporal
注释来确定该字段是否被视为java.sql.Timestamp
或java.util.Date
,其时间为lopped-off(设置为午夜,或00h 00m 00.0s)。这允许开发人员在他们的应用程序中的任何地方使用java.util.Date
,而不必担心Timestamp类(它从我们的大部分代码库中消失)。