MySQL 查询在 Workbench 中有效,但 hibernate 抛出 MySQLSyntaxErrorException

标签 mysql sql hibernate hibernate-mapping

我有一个查询,它给我带来了 2 个结果。当我在 MySQL Workbench 上使用它时它工作正常,但是当我在 hibernate 映射上将它用作公式时,我收到此错误:

SEVERE: Servlet.service() for servlet [FacesServlet] in context with path [/glic_web_admin] threw exception [javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'shipmentre0_.SEPARATOR ', ') FROM glic_shipment s LEFT OUTER JOIN glic_shipment' at line 1

这是我在 hibernate 映射中的 SQL 查询:

<property name="supplier" type="java.lang.String"
            formula="(SELECT GROUP_CONCAT(pnSon.supplier SEPARATOR ', ')
     FROM glic_shipment s 
     LEFT OUTER JOIN glic_shipment sSon ON sSon.id_shipment_parent = s.id
     LEFT OUTER JOIN glic_rel_purchase_shipment_common_data pscdSon ON pscdSon.id = sSon.id_common_data
     LEFT OUTER JOIN glic_purchase_notice pnSon ON pnSon.id = pscdSon.id_purchase_notice)" />   

此查询的预期输出是一个字符串,其中连接了结果。我知道这是一个语法问题,但我没有找到如何解决这个问题。

编辑: 这是 hibernate 正在执行的查询:

(SELECT GROUP_CONCAT(pnSon.supplier shipmentre0_.SEPARATOR ', ') FROM glic_shipment s  LEFT OUTER JOIN glic_shipment sSon ON sSon.id_shipment_parent = s.id LEFT OUTER JOIN glic_rel_purchase_shipment_common_data pscdSon ON pscdSon.id = sSon.id_common_data LEFT OUTER JOIN glic_purchase_notice pnSon ON pnSon.id = pscdSon.id_purchase_notice) as formula27_0_

我该如何解决这个问题?

最佳答案

你不必写SEPARATOR ', '尝试如下:

<property name="supplier" type="java.lang.String"
            formula="(SELECT GROUP_CONCAT(pnSon.supplier, ' ')
     FROM glic_shipment s 
     LEFT OUTER JOIN glic_shipment sSon ON sSon.id_shipment_parent = s.id
     LEFT OUTER JOIN glic_rel_purchase_shipment_common_data pscdSon ON pscdSon.id = sSon.id_common_data
     LEFT OUTER JOIN glic_purchase_notice pnSon ON pnSon.id = pscdSon.id_purchase_notice)" /> 

关于MySQL 查询在 Workbench 中有效,但 hibernate 抛出 MySQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46488386/

相关文章:

java - 获取异常 java.lang.NoClassDefFoundError : org/springframework/transaction/interceptor/TransactionInterceptor while executing

java - 保存一对一关系: Null pointer Exception

php - 一张表多字段还是两表少字段?

sql - 在 SQL 中,为什么这个 JOIN 会两次返回键列?

c# - 通过 Internet 连接 MySQL 和 .net 应用程序有危险吗?

php - 当我尝试 CakePHP 方式时,Cakephp 2.8.x 查询访问冲突。正常查询有效

sql - 有哪些工具可以测试SQL语句的性能?

java - JPA无法更新实体

mysql - 在 docker/docker-compose 中连接 Python 和 MySQL

mysql - 对两个参数进行排序