我使用Spring 1.5.2引导和以下@Query:春天引导产生无效的MySQL查询(only_full_group_by)
@Query(value = "SELECT m FROM Message m WHERE m.from.userId = :myId OR m.to.userId = :myId GROUP BY m.from.userId, m.to.userId ORDER BY m.date DESC")
List<Message> chatOverview(@Param("myId") final Long myUserId);
查询的目的是创建一个聊天信使概述,在那里你看到每次对话的最后一条消息。它工作正常,我在开发中,但在生产中(新的MySQL数据库版本)我得到这个错误:
java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'message0_.message_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
我在这个thread什么这一变化的原因是阅读,但我不能找到一种方法用JPA/Spring来解决这个问题。我无法更改生产MySQL数据库中的任何设置,我也想避免在Spring中进行任何升级。我如何解决我的查询?
“Spring Boot”不创建该查询,您的JPA提供程序确实(哪一个?)。而且你还没有发布ACTUAL SQL被调用 – DN1
当然,但Spring Boot定义了JPA提供程序 - > Hibernate。对于实际的SQL,我会尝试去获得它(我认为它是使用调试日志记录的),但是我不认为这会有很大的帮助,因为我无法修改实际的SQL,但只能修改JPQL .... – schneida
你定义JPA提供者(对Spring)。然后,实际的SQL被用来报告你选择的JPA提供者的BUG,并说我想在这个数据库上执行这个JPQL并得到这个无效的SQL。 – DN1