我正在尝试将Spring Boot Java应用程序连接到Oracle数据库。 Oracle SQL Developer在其他用户->`testUser下的名为testdb的数据库中显示了我希望查询的表。

我可以使用url jdbc:oracle:thin:@localhost:1521:testdb连接到数据库。但是,当我使用SQL语句时

SELECT * FROM SCHEMA_DEFINITION WHERE SCHEMA_NM = ?

Java找不到名为SCHEMA_DEFINITION的表。在SQL语句中使用testUser.SCHEMA_DEFINITION确实可行。如何告诉Java在Other users->testUser中查找所有表?

我尝试设置数据源的架构(dataSource.setSchema("testUser");)并更改url(添加?search_path=testUser?currentSchema=testUser)。

这些都不起作用。

最佳答案

这不是Java问题,您需要登录到用户testUser中,以便如果您确实需要保持这些查询的原样,则可以使用冗长的语法查询那些表,并从testdb运行它们,然后您需要为这些表创建同义词testdb模式内的表:

CREATE SYNONYM TESTDB.SCHEMA_DEFINITION FOR testUser.SCHEMA_DEFINITION;

对每个表执行此操作,它们将起作用。

10-04 17:03