Oracle 如何设置连接属性(includeSynonyms)
我在Spring Boot中的DB配置是使用yaml文件完成的:Oracle 如何设置连接属性(includeSynonyms),oracle,hibernate,spring-boot,Oracle,Hibernate,Spring Boot,我在Spring Boot中的DB配置是使用yaml文件完成的: #通用 春天: jpa: 特性: 冬眠: show_sql:true 使用sql注释:truecat sql格式:false ddl自动:验证 同义词:真 连接: includeSynonyms:真 #连接\u属性\u包含\u同义词\u默认值:“true” 数据库:ORACLE 数据源: tomcat: 最大有效时间:10 最大怠速:10 #仅模板 --- 春天: 简介:dev 数据源: url:jdbc:oracle:thin:
#通用
春天:
jpa:
特性:
冬眠:
show_sql:true
使用sql注释:truecat
sql格式:false
ddl自动:验证
同义词:真
连接:
includeSynonyms:真
#连接\u属性\u包含\u同义词\u默认值:“true”
数据库:ORACLE
数据源:
tomcat:
最大有效时间:10
最大怠速:10
#仅模板
---
春天:
简介:dev
数据源:
url:jdbc:oracle:thin:@//localhost:1521/DEV
用户名:DEV
密码:。。。
起初我面对的是
架构验证:缺少表
所以我添加了hibernate.synonyms=true
,现在我得到了
架构验证:缺少列
为了解决这个问题,我需要像这样改变连接
我可以在配置中这样做吗
我试过但没用的东西
hibernate.connection.CONNECTION_PROPERTY_INCLUDE_SYNONYMS_DEFAULT: true
hibernate.connection.includeSynonyms: true
相关的:
我试着用谷歌搜索,但什么也没找到
编辑:
基于M.Deinum回答的附加测试:
我坚信,
spring:
jpa:
特性:
hibernate.同义词:true
及
spring:
jpa:
特性:
冬眠:
同义词:真
是一样的,至少它有相同的效果,当我使用一个或另一个(都导致模式验证:缺少列
我补充说
数据源:
tomcat:
最大有效时间:10
最大怠速:10
连接属性:
includeSynonyms:真
但我也犯了同样的错误
架构验证:缺少列
当我完全移除
spring:
jpa:
特性:
冬眠:
同义词:真
我要走了
架构验证:缺少表
编辑2:
正在尝试在hikari连接池上设置属性
spring:
jpa:
特性:
冬眠:
show_sql:true
使用sql注释:true
sql格式:false
ddl自动:验证
同义词:真
数据库:ORACLE
数据源:
希卡里:
连接属性:
includeSynonyms:真
我仍然得到:
缺少列[区域定义PK\U id]
只是为了测试,当我用视图替换同义词时,它就可以了。当我关闭验证时,它也可以了。我的意思是,功能可以正常工作
编辑3
注意
连接属性
与数据源属性
相比,使用同义词验证需要更长的时间(至少对我而言)
EDIT:您使用的不是Tomcat连接池,而是默认的HikariCP。因此设置Tomcat属性几乎毫无用处
在属性中添加以下内容
spring.datasoure.hikari.datasource-properties.includeSynonyms=true
或亚马尔
spring:
datasource:
hikari:
datasource-properties:
includeSynonyms: true
您也可以设置相应的hibernate属性,但设置方式不同。您需要通过spring.jpa.properties
进行设置。这是因为同义词
没有作为spring Boot使用的properties对象的属性公开。因此,您需要将其设置为附加属性
注意重要的是使用完整的属性名hibernate。同义词
在本节中,不要将其格式化为YAML,因为这样做行不通
spring:
jpa:
properties:
hibernate.synonyms: true
编辑(1):由于使用的池是Hikari,而不是Tomcatc,因此更改为Hikari命名空间和属性。感谢您的回复,但它不起作用-我将更新问题。然后您还没有设置正确的属性。而且它是yaml,因此请确保缩进正确!我非常小心使用yaml格式,我还尝试使用它进行解析od,只是没有发挥神奇的作用…谢谢,这起作用了!也许我建议你在那里也有
tomcat
的版本(特别是如果属性是连接属性
,而不是数据源属性
,比如hikari)。谢谢,仅使用hibernate。同义词:true
在未找到列时失败,但此hikariincludeSynoyms
属性救了我!它正在抱怨缺少列,因此您的列名与实体中的属性/字段/映射信息不匹配。我进行了调试。hibernate没有检索synony的列信息ms,这是缺少列
错误的根本原因。随着错误的更改,这些设置中的任何一个都会起作用。您确定要使用tomcat连接池吗?您使用的是哪个Spring BOot版本?还有hibernate。同义词
和hibernate:同义词:
与Spring BOot使用正确的从spring.jpa.properties
按原样绑定。它不会解析它下面的YAML(这已经并且可能将是一个混乱的来源)属性按原样使用。不,我不是100%确定是否使用了tomcat连接池。我在日志中看到了HikariPool-1-启动已完成。
这是相同的还是不同的?还有在Spring Boot v2.1.4.RELEASE、Spring v5.1.6.RELEASE中运行。请将此添加到您的问题中。显然,在tomc上设置属性at连接池非常无用。请改用spring.datasource.hikari
名称空间。