Hibernate:如何使用CONCAT和GROUP_CONCAT

时间:2011-02-10 09:57:46

标签: java mysql hibernate hql

如何在HQL查询中使用CONCAT()GROUP_CONCAT()

3 个答案:

答案 0 :(得分:10)

关于concat:它的工作方式与在MySQL中的工作方式完全相同(它连接字符串,它不是聚合函数)。

您可以将group_concat作为sql函数添加到您的配置中。这样您就可以假设底层数据库知道这个函数,并将程序绑定到 MySQL

import org.hibernate.cfg.Configuration; 
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.type.StringType;

// ...
myConf.addSqlFunction("group_concat", new StandardSQLFunction("group_concat", new StringType()));

您还指出该函数的输出是一个字符串。如果没有这个,group_concat数字字段Hibernate将假设结果也是数字并崩溃。

答案 1 :(得分:1)

是方言的子类

registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING));

或使用SQLFunctionTemplate

答案 2 :(得分:1)

如果您使用的是createSQLQuery,请将该列的addScalar用作String。

SQLQuery query = sessionObj.createSQLQuery("select group_concat(column1,column2) as mycolumn from some table group by someThing");
query.addScalar("mycolumn ", Hibernate.STRING);