Я недавно обновил MySQL с 5.6 до 5.7.14, и теперь все запросы критериев, которые использовали groupProperty
, терпят неудачу с ошибкой, подобной упомянутой ниже:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test_dev.this_.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Это связано с текущим изменением подхода MySQL к обработке GROUP BY
, который упоминается здесь .
Итак, согласно этим журналам изменений, мы можем решить эту проблему следующим образом:
- Отключение
ONLY_FULL_GROUP_BY
, что, на мой взгляд, не очень удачный подход.
- Использование
ANY_VALUE()
для ссылки на неагрегированный столбец.
Но нет такой опции, чтобы использовать any_value()
в запросе критериев Grails.
Обновление запроса до низкоуровневого оператора SQL или использование HQL может помочь, но для этого потребуются изменения в нескольких местах.
Итак, есть ли лучший подход, с помощью которого мы можем справиться с вышеупомянутым сценарием?