Java 在Toplink中查找与日期相等的行的SQL查询

Java 在Toplink中查找与日期相等的行的SQL查询,java,sql,oracle,toplink,Java,Sql,Oracle,Toplink,我真的很讨厌Oracle中的日期,但我只想做一个基本查询,找出一行或多行是否等于一个日期(Oracle表中的日期格式为11年1月17日)。我正在使用Toplink尝试形成查询 我的代码如下: ReadAllQuery query = new ReadAllQuery(FooMyTable.class); ExpressionBuilder builder = query.getExpressionBuilder(); if (dateFoo != null) query.setSele

我真的很讨厌Oracle中的日期,但我只想做一个基本查询,找出一行或多行是否等于一个日期(Oracle表中的日期格式为11年1月17日)。我正在使用Toplink尝试形成查询

我的代码如下:

ReadAllQuery query = new ReadAllQuery(FooMyTable.class);
ExpressionBuilder builder = query.getExpressionBuilder();

if (dateFoo != null)
    query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").equal(dateFoo));

它总是返回零行,我想这是因为我应该使用truncateDate()或其他东西,但我无法理解语法。有人能帮忙吗??,在谷歌上找不到任何像样的东西,所以发了这篇帖子

更新:现在我知道这肯定与时间和日期有关-对于没有时间的行,只是一个日期,上面的代码可以工作,但是如果日期值也有时间,那么它就会失败。

实际需要的代码是:

query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").truncateDate("DD").equal(dateFoo));
错误消息:

ORA-01898: too many precision specifiers Error Code: 1898 

是因为格式掩码不正确-因为我需要将日期四舍五入到neareset日期。

生成的SQL是什么?truncateDate(“DD”)似乎应该有效