如何在 Grails 3 中设置 Oracle 连接属性“includeSynonyms=true”

Leo*_*Leo 5 oracle grails grails3

我的 Grails 3.3.2 应用程序当前连接到 Oracle 11g 数据库,其中一些数据表是 dblink 的同义词,指向另一个数据库中的物理表。当 Grails 应用程序启动时,抛出以下 hibernate 异常:

org.hibernate.tool.schema.spi.SchemaManagementException:架构验证:表 [tbl_with_synonyms] 中缺少列 [col_in_tbl_with_synonyms]

很多文章都说includeSynonyms必须设置connection属性true才能让Oracle返回元数据,这样hibernate才能找到列定义。所以我尝试以includeSynonyms=true不同的方式设置,但仍然无法正常工作并且总是出现上述错误,无论我使用的是 ojdbc6 还是 ojbc8 驱动程序。

我知道我可以设置dbCreate: none绕过验证作为解决方法,但是通过验证可以更早地找出映射问题,这应该是一个好主意。

以下是我的配置供参考,有什么想法吗?谢谢!

构建.gradle

bootRun { jvmArgs = ['-Doracle.jdbc.includeSynonyms=true'] }

应用程序.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