Cayenne SQLTemplate返回错误的结果

时间:2013-08-30 01:03:08

标签: apache-cayenne

我对这个问题非常重视。请帮忙。

sql = "SELECT * FROM scheduler_assignment a WHERE a.start < #bind($end)";
SQLTemplate query = new SQLTemplate(Assignment.class, sql);
query.setFetchingDataRows(true);
Map<String, Object> params = new HashMap<String, Object>();
params.put("end", end);
query.setParameters(params);
ObjectContext context = BaseContext.getThreadObjectContext();
List<DataRow> rows = context.performQuery(query);

end是一个Date对象。当我将end更改为其等效的String时,查询正常工作。有谁知道为什么传入Date对象不适用于bind指令?谢谢!

1 个答案:

答案 0 :(得分:1)

第一种可能性:'scheduler_assignment.start'列不是数据库中的日期。它可能是VARCHAR或其他东西。

如果不是这种情况,您可能必须在#bind指令中传递Cayenne的参数类型才能使用正确的驱动程序方法。 E.g:

#bind($end 'TIMESTAMP')