我有一个问题,它给我带来了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}}
我该如何解决这个问题?
答案 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)" />