Использование Grails/Hibernate со старыми базами данных.Как создать недостающие функции?

StackOverflow https://stackoverflow.com/questions/1048285

  •  20-08-2019
  •  | 
  •  

Вопрос

Итак, Hibernate поддерживает последнюю версию Firebird, и это действительно здорово.Но...

У меня есть база данных Firebird 1.5.2.Мое приложение Grails использует эту базу данных через Hibernate... пока все отлично.

Мои приложения отправляют запросы с функциями, которые неизвестны моей базе данных.Например, функция LOWER, которая теперь поддерживается в Firebird начиная с версии 2.x.

Мой вопрос:Можно ли получить специальный диалект Hibernate для моей базы данных?В настоящее время я использую:диалект = "org.hibernate.dialect.FirebirdDialect"

Как я могу помочь моей базе данных обрабатывать эти неизвестные функции?

Это было полезно?

Решение

Вы можете создать свой собственный класс диалекта, создав подкласс FirebirdDialect и перезаписав все функции, которые должны возвращать разные значения.

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

hibernate.query.substitutions toLowercase=mylower

Однако, поскольку в Firebird 1.5 нет функции toLowercase, вам придется реализовать ее самостоятельно. как описано в документации Firebird.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top