Как я могу использовать CONCAT()
и GROUP_CONCAT()
в запросах HQL?
Hibernate: как использовать CONCAT и GROUP_CONCAT
Ответ 1
О 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 будет считать результат также числовым и аварийным.
Ответ 2
подкласс диалект
и
registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING));
или используйте SQLFunctionTemplate
Ответ 3
Если вы используете 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);