【问题标题】:How to use CONCAT_WS() in Hibernate HQL如何在 Hibernate HQL 中使用 CONCAT_WS()
【发布时间】:2014-06-06 09:48:32
【问题描述】:

要将多列合并为一列, I found one answer

SELECT id,CONCAT_WS(',', field_1, field_2, field_3, field_4) list
FROM  `table`;

此查询在 SQL 中运行良好,但在 HQL 中出现错误:
错误是。

(java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode)

请帮助我找出我做错了什么,帮助我知道如何在 HQL 中使用 CONCAT_WS()

下面是我如何编写 HQL 查询

SELECT C1._URI,C1.HEALTH_FACILITY,C1.DISTRICT,CONCAT_WS(',', C1.BLOCKS_OF_BHUBRI, C1.BLOCKS_OF_GOLAGHAT, C1.BLOCKS_OF_HAILAKANDI) as Block_name
FROM GapAnalysisWashInHealthFacilitiesCore C1

任何帮助将不胜感激

【问题讨论】:

    标签: java mysql sql hibernate


    【解决方案1】:

    CONCAT_WS 是 mySql 特有的函数。 HQL 是一种通用语言,不了解本机 SQL 函数和语法。如果你真的需要这个功能,那么你应该使用 Hibernate 的原生 SQL API。

    Session session = ...;
    Query query = session.createSQLQuery("
        SELECT id,CONCAT_WS(',', field_1, field_2, field_3, field_4) Block_name FROM `table`");
    List result = query.list();
    

    那么您可能想查看Result Transformers 以获得GapAnalysisWashInHealthFacilitiesCore 对象列表的结果。

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 2016-03-28
      • 2013-11-12
      • 1970-01-01
      相关资源
      最近更新 更多