在甲骨文我有格式的日期
2011年4月17日19:20:23.707000000
我想检索2011年4月17日的所有订单。
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
Date date = formatter.parse(myDate);
Criteria criteria =
session.createCriteria(Order.class);
Criterion restrictDate = Restrictions.like("orderDate",date);
但这给我带来了空洞的结果:
为什么使用Restrictions.like(...
)?
您应该使用Restrictions.eq(...)
。
请注意,您也可以使用.le
,.lt
,.ge
,.gt
在日期对象作为比较操作。LIKE
运算符不适用于这种情况,因为LIKE
当您要根据列的部分内容匹配结果时很有用。请参阅http://www.sql-
tutorial.net/SQL-LIKE.asp
作为参考。
例如,如果您的姓名列中包含某些人的全名,则可以这样做,where name like 'robert %'
以便您返回名称以'robert '
(%
可以替换任何字符)开头的所有条目。
在您的情况下,您知道要匹配的日期的全部内容,因此您不应该使用LIKE
相等。我猜Hibernate在这种情况下不会给您任何异常,但是无论如何,您可能会遇到同样的问题Restrictions.eq(...)
。
您的日期对象带有以下代码:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
Date date = formatter.parse(myDate);
此日期对象等于07:00、0分,0秒和0纳秒的17-04-2011。
这意味着您在数据库中的条目必须具有 确切的 日期。我的意思是,如果您的数据库条目的日期为“ 17-April-2011
19:20:23.707000000”,那么它将不会被检索,因为您只要求输入该日期:“ 17-April-2011 00:00:
00.0000000000”。
如果要检索给定日期的数据库的所有条目,则必须使用以下代码:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
// Create date 17-04-2011 - 00h00
Date minDate = formatter.parse(myDate);
// Create date 18-04-2011 - 00h00
// -> We take the 1st date and add it 1 day in millisecond thanks to a useful and not so known class
Date maxDate = new Date(minDate.getTime() + TimeUnit.DAYS.toMillis(1));
Conjunction and = Restrictions.conjunction();
// The order date must be >= 17-04-2011 - 00h00
and.add( Restrictions.ge("orderDate", minDate) );
// And the order date must be < 18-04-2011 - 00h00
and.add( Restrictions.lt("orderDate", maxDate) );
问题内容: 在我的数据库日期中,如 ,等等,我需要检索在日期字段中具有当前日期的数据。我的意思是我只需要比赛。我该如何使用hibernate条件。 问题答案: 使用Restrictions.between()生成一个where子句,该子句的日期列在‘2012-04-09 00:00:00’和‘2012-04-09 23:59:59’之间 请注意,Criteria API中使用的所有属性都是Java
问题内容: 假设我有一个带有数量字段和价格字段的持久类Item。有没有办法建立一个计算数量*价格之和的标准? 问题答案: 我认为您也可以使用SQL投影。应该是这样的: 奥里
问题内容: 我正在尝试使用以下代码从表中提取“体验”对象列表。每种体验都有一个from 列和一个to 列,我只想在今天的日期介于from和to之间的地方拉行。 我正在使用从Hibernate运行的JPA 2.0。 我的问题是,显然不允许我传递Date对象。 我的问题有更好的解决方案吗? 问题答案: 您可以将其作为参数传递: 请注意,在这种情况下,您需要指定所需的时间类型。 您也可以依靠数据库的当前
问题内容: 我正在尝试在我的员工实体中关联功能列表(可嵌入),H2对此表示不满,因为它期望使用“标识符” 由以下原因引起:org.h2.jdbc.JdbcSQLException:SQL语句中的语法错误“ CREATE TABLE EMPLOYEE_FUNCTIONS(EMPLOYEE_EMPLOYEEID VARCHAR(255)NOT NULL,ACTIVE BOOLEAN NOT NULL,
问题内容: 我有一个hibernate映射,该映射一直工作到最近-尽管我确定这是我所做的某些更改的结果,但我似乎找不到它。 映射文件将字段定义为: 该类将该字段定义为: 运行此代码时,出现以下错误: 与此对应的数据库字段定义为: 我还有其他几个具有相似结构和定义的类,并且它们没有问题。但是,可能由于我最近所做的一些更改而导致,此特定映射将不再正常工作。 有什么建议么? 问题答案: 我不确定,但是您
问题内容: 我收到了一个我无法解释的奇怪的Hibernate异常。告诉我我正在使用二级缓存,但是没有在哪里指定二级缓存。这是例外: 而我的: 有什么想法会触发此异常吗?提前致谢! 问题答案: Pau在hibernate.cfg.xml中写了hibernate.cache.region.factory_class: 唯一的例外是不言而喻的。您必须设置 属性。例如,使用ehcache将添加以下行: n