Я довольно пень в этой проблеме. Пожалуйста помоги.Cayenne SQLTemplate возвращает неверный результат
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
на эквивалентную строку, запрос работает правильно. Кто-нибудь знает, почему передача объекта Date не будет работать для директивы bind? Спасибо!
Спасибо, что посмотрели на мой вопрос. Я проверил, что scheduler_assignment.start является типом данных DATETIME в базе данных MySQL. Я поместил тип аргумента, как ваш пример, но я все еще получаю неправильный результат. Вот журнал выполненного SQL. Когда я запускаю запрос из MySQL Workbench, я получаю одну строку. Когда я запускаю тот же запрос, используя вышеприведенный код, я получаю нулевую строку. 'SELECT * FROM scheduler_assignment a WHERE a.start [bind: 1: '2013-08-31 23: 00: 00.0'] ' – Tuan
Не может ли он превратиться в другой часовой пояс где-нибудь? – Tuan
http://objectstyle.org/cayenne/lists/cayenne-user/2007/08/0027.html – Tuan