hibernate查询以比较表中的两个日期字段

hibernate查询以比较表中的两个日期字段,hibernate,postgresql,Hibernate,Postgresql,我在应用程序中使用PostgreSQL数据库和hibernate。我有一个包含两个字段的表:updated\u datetimestamp(无时区)和processed\u time(无时区)。我有以下疑问: String hql = "From WebContentDefinition wcd where wcd.pageUpdatedDate > wcd.processedTime"; Query query = session.createQuery(hql); 这里WebCon

我在应用程序中使用
PostgreSQL
数据库和
hibernate
。我有一个包含两个字段的表:
updated\u date
timestamp(无时区)和
processed\u time(无时区)。我有以下疑问:

String hql = "From WebContentDefinition wcd where  wcd.pageUpdatedDate > wcd.processedTime";
Query query = session.createQuery(hql);
这里
WebContentDefinition
是对应于表的pojo。现在,字段
processed\u time
有时可能不包含任何值。
我当前的查询没有返回任何内容。有没有解决办法。我想要更新日期大于处理时间的所有行。

如果我正确理解您的问题,以下是您的表格的外观:

postgres=# select * from WebContentDefinition
postgres-# ;
pageupdateddate   |    processedtime
---------------------+---------------------
2015-09-28 09:41:37 | 2015-09-28 09:41:35
2015-09-26 09:41:37 | 2015-09-26 09:30:35
2015-09-26 09:40:37 |
(3 rows)
这是当前查询的输出:

postgres=# select *  From WebContentDefinition wcd where  wcd.pageUpdatedDate > wcd.processedTime;
pageupdateddate   |    processedtime
---------------------+---------------------
2015-09-28 09:41:37 | 2015-09-28 09:41:35
2015-09-26 09:41:37 | 2015-09-26 09:30:35
(2 rows)
如果processedTime为null,则可以使用COALESCE将其设置为某个旧日期,然后运行相同的查询:

postgres=# select pageupdateddate, COALESCE(processedTime, '1900-01-01 00:00:00') from WebContentDefinition;
pageupdateddate   |      coalesce
---------------------+---------------------
2015-09-28 09:41:37 | 2015-09-28 09:41:35
2015-09-26 09:41:37 | 2015-09-26 09:30:35
2015-09-26 09:40:37 | 1900-01-01 00:00:00
(3 rows)
查询的最终输出:

postgres=# select *  From WebContentDefinition wcd where  wcd.pageUpdatedDate > COALESCE(wcd.processedTime, '1900-01-01 00:00:00');
pageupdateddate   |    processedtime
---------------------+---------------------
2015-09-28 09:41:37 | 2015-09-28 09:41:35
2015-09-26 09:41:37 | 2015-09-26 09:30:35
2015-09-26 09:40:37 |
(3 rows)

您的查询缺少
where
关键字。我先把它修好。