我一直在思考它,我开始怀疑这是否可能。
用户视角:
有一个数据表,一列包含日期。用户可以输入搜索字词dec
,并获取12月期间发生的所有行。
后端:jqGrid用于显示表格。它将输入的搜索词发送到服务器。服务器使用代码
Criteria cr = session.createCriteria( DetailedLogEntry.class );
Disjunction disjunction = Restrictions.disjunction();
MatchMode matchMode = MatchMode.ANYWHERE;
disjunction.add( Restrictions.ilike( searchKey.getField(), searchKey.getData(), matchMode ) );
cr.add( disjunction );
应用搜索字词,DetailedLogEntry
包含Date
变量以表示数据库的TIMESTAMP
字段。
因为searchKey.getData()
返回一个字符串,将它与日期对象进行比较会产生一个空集。
所以我想问题是 ...是否可以通过Hibernate对Date
对象应用限制,就像它是一个字符串一样?
答案 0 :(得分:0)
那是不可能的。您需要使用Restrictions.between()
并为其指定上下日期值。您可以使用SimpleDateFormat
将String
值转换为Date
值,然后执行搜索?
如果用户搜索了Dec,您是否希望每年12月的所有日志条目都显示出来?他们可以输入:“1月12日”,并期望每年12月1日看到所有日志?如果它是您正在寻找的日期的字符串匹配,可能更容易将所有数据加载到您的jqGrid并使用javascript根据字符串格式的日期值过滤表。