Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何设置连接属性(includeSynonyms)_Oracle_Hibernate_Spring Boot - Fatal编程技术网

Oracle 如何设置连接属性(includeSynonyms)

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:

我在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:@//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
在未找到列时失败,但此hikari
includeSynoyms
属性救了我!它正在抱怨缺少列,因此您的列名与实体中的属性/字段/映射信息不匹配。我进行了调试。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
名称空间。