0

在这个问题上我很困惑。请帮忙。

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是一个日期对象。当我更改end为其等效字符串时,查询正常工作。有谁知道为什么传入 Date 对象对 bind 指令不起作用?谢谢!

4

1 回答 1

1

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

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

#bind($end 'TIMESTAMP')
于 2013-08-30T08:46:52.340 回答