Grails 3连接Oracle时如何设置includeSynonyms=true解决同义词校验异常
解决Grails 3.3.2连接Oracle 11g同义词表的Schema校验异常
针对你遇到的Hibernate Schema校验报错问题——访问带dblink的同义词表时无法识别列,确实需要开启Oracle JDBC的includeSynonyms属性。下面是具体的配置方法,根据你的配置文件类型选择即可:
1. 使用application.yml配置
在项目的grails-app/conf/application.yml中,找到dataSource节点,添加properties子节点并设置includeSynonyms: true:
dataSource: pooled: true jmxExport: true driverClassName: oracle.jdbc.OracleDriver username: 你的数据库用户名 password: 你的数据库密码 url: jdbc:oracle:thin:@//你的数据库地址:端口/服务名 properties: includeSynonyms: true
2. 使用application.groovy配置
如果你的项目用的是Groovy格式的配置文件,在grails-app/conf/application.groovy中这样配置:
dataSource { pooled = true jmxExport = true driverClassName = "oracle.jdbc.OracleDriver" username = "你的数据库用户名" password = "你的数据库密码" url = "jdbc:oracle:thin:@//你的数据库地址:端口/服务名" properties { includeSynonyms = true } }
3. 多数据源场景
如果项目配置了多个数据源,需要在每个数据源的配置下都添加这个属性。比如在application.yml中:
dataSources: main: pooled: true driverClassName: oracle.jdbc.OracleDriver username: 主库用户名 password: 主库密码 url: jdbc:oracle:thin:@//主库地址:端口/服务名 properties: includeSynonyms: true otherDb: pooled: true driverClassName: oracle.jdbc.OracleDriver username: 其他库用户名 password: 其他库密码 url: jdbc:oracle:thin:@//其他库地址:端口/服务名 properties: includeSynonyms: true
配置完成后重启应用,Hibernate在进行Schema校验时就会识别同义词对应的远程表结构,不会再抛出missing column的异常了。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

