我使用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