ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

java-为Jpa存储库设置sql_mode = {SELECT REPLACE(@@ sql_mode,’ONLY_FULL_GROUP_BY’,”))

2019-11-08 07:03:54  阅读:441  来源: 互联网

标签:spring-boot spring-data-jpa java mysql group-by


我正在尝试使用这样的自定义查询:

@Query("SELECT i " + 
       "FROM ManagerWorkplace i " + 
       "WHERE i.managerId = ?1 " + 
       "AND i.companyId = ?2 " + 
       "GROUP BY i.zoneId")
List<ManagerWorkplace> findByManagerIdAndCompanyId(Long managerID, Long companyId);

但是我得到了这个错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘db_oem.managerwor0_.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

我知道一种通过使用以下方法在MySQL上修复此错误的方法

SET sql_mode=(SELECT REPLACE(@@sql_mode,’ONLY_FULL_GROUP_BY’,”))

,有什么方法可以对JpaRepository做同样的事情吗?

解决方法:

您的查询不正确.您正在选择不在分组依据的结果表中的列.它与Java或JPA无关.

与一个组一起创建新表.每个zoneId将有一行.假设在原始表中有多个具有特定zoneId的行,并且对于至少一列,这些行中具有不同的值.在新表中应该使用哪一个?无法做到这一点.

您也可以按多列分组.在新表中,这些列的每种组合都会有一行.

因此,在新表中,您可以为区域ID选择分组依据中的列.您还可以在新表格中添加哪些内容?例如,zoneId有多少列值.可以做到的.或一列的最大值或最小值(请记住具有多个值).也可以做到这一点.这是他们正在谈论的汇总.

标签:spring-boot,spring-data-jpa,java,mysql,group-by
来源: https://codeday.me/bug/20191108/2006142.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有