Мое приложение Grails 3.3.2 в настоящее время подключается к базе данных Oracle 11g, и некоторые таблицы данных являются синонимами dblink, которые указывают на физическую таблицу в другой базе данных. При запуске приложения Grails возникало следующее исключение hibnerate:
org.hibernate.tool.schema.spi.SchemaManagementException: проверка схемы: отсутствует столбец [col_in_tbl_with_synonyms] в таблице [tbl_with_synonyms]
Во многих статьях говорится, что свойство подключения includeSynonyms
должно быть установлено на true
, чтобы позволить Oracle вернуть метаданные, чтобы hibernate мог найти определение столбца. Поэтому я пытался установить includeSynonyms=true
по-разному, но все еще не заставлял его работать и всегда получал ошибку выше, независимо от того, использовал ли я драйвер ojdbc6 или ojbc8.
Я знаю, что могу установить dbCreate: none
для обхода проверки в качестве обходного пути, но с проверкой можно обнаружить проблему сопоставления раньше, что должно быть хорошей идеей.
Ниже приведена моя конфигурация для справки, есть идеи? Спасибо!
build.gradle
bootRun {
jvmArgs = ['-Doracle.jdbc.includeSynonyms=true']
}
application.yml
spring:
...
datasource:
dbProperties:
includeSynonyms: true
synonyms: true
connectionProperties:
includeSynonyms: true
synonyms: true
connection-properties:
includeSynonyms: true
synonyms: true
hibernate:
...
synonyms: true
includeSynonyms: true
dataSources:
dataSource:
driverClassName: oracle.jdbc.OracleDriver
dialect: org.hibernate.dialect.Oracle10gDialect
dbCreate: validate
dbProperties:
includeSynonyms: true
synonyms: true
connectionProperties:
includeSynonyms: true
synonyms: true
connection-properties:
includeSynonyms: true
synonyms: true
...
properties:
...
includeSynonyms: true
synonyms: true
dbProperties:
includeSynonyms: true
synonyms: true
connectionProperties:
includeSynonyms: true
synonyms: true
connection-properties:
includeSynonyms: true
synonyms: true