【问题标题】:MySQL query works in Workbench but hibernate throws MySQLSyntaxErrorExceptionMySQL 查询在 Workbench 中工作,但休眠抛出 MySQLSyntaxErrorException
【发布时间】:2018-03-11 07:59:36
【问题描述】:

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

严重:servlet [FacesServlet] 的 Servlet.service() 在上下文中 路径 [/glic_web_admin] 抛出异常 [javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException:无法提取 ResultSet] 有根本原因 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,以便在附近使用正确的语法 'shipmentre0_.SEPARATOR ', ') FROM glic_shipment 左外连接 glic_shipment' 在第 1 行

这是我在休眠映射中的 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_

我该如何解决这个问题?

【问题讨论】:

  • 在 hbm config 中添加 true 并发布输出的查询
  • @MaciejKowalski 检查编辑,感谢回复

标签: mysql sql hibernate hibernate-mapping


【解决方案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)" /> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2017-03-21
    相关资源
    最近更新 更多