我正在尝试使用这样的自定义查询:
@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.jdbc4.mysqlsyntaxerrorexception:Select List的表达式#1不在组中,并包含非汇总列" db_oem.managerwor0_.id"。这与sql_mode = hell
我知道一种通过使用
在mySQL上解决此错误的方法设置sql_mode =(选择替换(@@ sql_mode,'halle_full_group_by',''))
,有什么方法可以为JParepository做同样的事情吗?
您的查询不行。您正在选择不在组结果表中的列。它与Java或JPA无关。
与您一起创建一个新表。每个Zoneid都会有一行。假设在原始表中有多个行具有特定区域的行,并且对于至少一个列,这些行中有不同的值。在新桌子上应该采用哪一个?这是无法完成的。
您也可以按多列进行分组。在新表中,这些列的每个组合都会有一行。
因此,在新表中,您可以在您的case Zoneid中选择组中的列。您还可以将哪些东西放在新表中?例如,有多少列值适用于区域。这可以做到。或列的最大或最小值(请记住具有多个值)。这也可以完成。这是他们谈论的汇总。