使用 Spring Boot 和 Spring JDBC 在 oracle 中设置默认模式 = SOMETHING

新手上路,请多包涵

我现在正在使用 oracle 和 spring jdbc,但我不想在我的 sql 语句中使用模式:

示例:从 SCHEMA.table 中选择 *

有没有办法在 application.properties 或 application.yml 中设置默认模式?

原文由 Jose Amadeo Diaz Diaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
1 个回答

假设您使用 spring 数据源定义数据库连接,您可以在定义数据源配置时设置默认模式:

 spring.datasource.schema = #value for your default schema to use in database

您可以在此处找到更多信息: Spring Boot 参考指南。附录 A. 常见应用程序属性


在做了一些研究之后,看起来 Oracle 驱动程序不允许您设置要使用的默认架构,如下所述:

Oracle 连接 URL 中的默认模式

从那篇文章中,您有两个选择:

  1. 在执行您的语句之前执行此语句:
    ALTER SESSION SET CURRENT_SCHEMA=yourSchema

  1. 为您的表/视图/等创建同义词(如果我们谈论数据库中的许多元素,我觉得这真的很麻烦)。

我建议使用第一个选项。据我所知,Spring boot 在检索连接时没有提供执行语句的简单方法,因此最好的办法是使用 getConnection 方法(或检索来自数据源的连接)并在那里执行语句。


根据您的评论,解决此问题的更简单方法是使用 spring.datasource.schema 中的脚本:

 spring.datasource.schema = schema.sql

然后是 squema.sql 文件,内容如下:

 ALTER SESSION SET CURRENT_SCHEMA=mySchema

原文由 Luiggi Mendoza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进