Question

I'm pretty stump on this issue. Please help.

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 is a Date object. When I change end to its equivalent String, the query works correctly. Does anyone know why passing in the Date object would not work for the bind directive? Thank you!

Was it helpful?

Solution

First possibility: 'scheduler_assignment.start' column is not a date in the database. It could be a VARCHAR or something.

If this is not the case, you may have to pass the type of the argument in the #bind directive for Cayenne to use the right driver method. E.g.:

#bind($end 'TIMESTAMP')
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top