Hibernate: как использовать CONCAT и GROUP_CONCAT - PullRequest
11 голосов
/ 10 февраля 2011

Как я могу использовать CONCAT() и GROUP_CONCAT() в HQL-запросах?

Ответы [ 3 ]

10 голосов
/ 16 апреля 2011

О 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 голос
/ 14 августа 2012

Если вы используете 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);
1 голос
/ 16 апреля 2011

подкласс диалекта

и

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

или используйте SQLFunctionTemplate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...