Spring 5 - Использование неизвестной функции SQL в HQL

Я пробовал использовать в Spring ряд функций MySQL с HQL, которые не поддерживает спящий режим, например GROUP_CONCAT. Hibernate выдаст следующую ошибку.

Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 +-[METHOD_CALL] MethodNode: '('
 |  +-[METHOD_NAME] IdentNode: 'GROUP_CONCAT' {originalText=GROUP_CONCAT}
 |  \-[EXPR_LIST] SqlNode: 'exprList'
 |     \-[DOT] DotNode: 'propertyre1_.id' {propertyName=id,dereferenceType=PRIMITIVE,getPropertyPath=id,path=property.id,tableAlias=propertyre1_,className=com.mypackage.MyClas,classAlias=property}
 |        +-[ALIAS_REF] IdentNode: 'propertyre1_.id' {alias=property, className=com.mypackage.MyClass, tableAlias=propertyre1_}
 |        \-[IDENT] IdentNode: 'id' {originalText=id}

Однако я обнаружил, что спящий режим можно настроить для приема пользовательских функций, добавив в конфигурацию спящего режима с помощью ...

hibernateConfiguration.addSqlFunction("group_concat", new StandardSQLFunction("group_concat", new StringType()));

Я изо всех сил пытаюсь найти способ получить доступ к конфигурации гибернации с помощью Spring Boot & Spring 5+. Я нашел следующий сообщение stackoverflow, однако, похоже, это для более старой версии spring, поскольку LocalSessionFactoryBean больше не имеет метода с именем postProcessConfiguration или любого другого очевидного способа манипулировать конфигурацией.

Есть ли способ манипулировать конфигурацией гибернации до того, как фабрика сеансов будет построена в Spring 5+?

stackoverflow.com/questions/2736100/… помогает?

M A 03.10.2018 19:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
263
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ на это именно то, что вам нужно:

https://stackoverflow.com/a/42486291/6709262

Чтобы использовать его с Spring Boot, просто включите его в приложении. (Yml | properties):

spring.jpa.properties.hibernate.dialect = full.qualified.package.DialectName

да. Кажется, я зашел в тупик с подходом конфигурации, но этот подход действительно работает.

3urdoch 05.10.2018 22:05

Другие вопросы по теме