如何在Hibernate HQL中使用CONCAT_WS()

时间:2014-04-22 06:52:39

标签: java mysql sql hibernate

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

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

这个查询在SQL中运行正常,但它在HQL中给出了错误:
错误是。

(java.lang.IllegalStateException:节点没有数据类型: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

任何帮助都会感激

1 个答案:

答案 0 :(得分:1)

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

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个对象列表的结果。