MySQL查询在Workbench中工作,但是hibernate会抛出MySQLSyntaxErrorException

时间:2017-09-29 12:00:24

标签: mysql sql hibernate hibernate-mapping

我有一个问题,它给我带来了2个结果。当我在MySQL Workbench上使用它时它可以正常工作,但是当我在我的hibernate映射中使用它作为公式时,我收到了这个错误:

  

SEVERE:servlet [FacesServlet]的Servlet.service()与上下文有关   path [/ glic_web_admin]抛出异常   [javax.persistence.PersistenceException:   org.hibernate.exception.SQLGrammarException:无法解压缩   具有根本原因的ResultSet]   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本为正确的语法使用附近   'shipmentre0_.SEPARATOR',')来自glic_shipment的LEFT OUTER JOIN   第1行的glic_shipment

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

(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_

此查询的预期输出是一个串联结果的String。我知道这是一个语法问题,但我没有找到如何解决这个问题。

修改 这是hibernate正在执行的查询:

{{1}}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你不得写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)" />