我对这个问题非常重视。请帮忙。
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指令?谢谢!
答案 0 :(得分:1)
第一种可能性:'scheduler_assignment.start'列不是数据库中的日期。它可能是VARCHAR或其他东西。
如果不是这种情况,您可能必须在#bind指令中传递Cayenne的参数类型才能使用正确的驱动程序方法。 E.g:
#bind($end 'TIMESTAMP')