1

我有一个使用 JPA连接<non-jta-datasource>persistence.xml容器管理的 Oracle 数据源的项目,我必须在某些时候使用动态构建的本机查询。默认情况下,在 Oracle 中,我需要schema在表名中指定进行查询,但我无权访问模式名称(也不应该)。

首先,这是预期的行为吗?如果我执行SELECT * FROM TABLEHibernate 是否应该将其重命名为 Datasource 参数并SELECT * FROM SCHEMA.TABLE改为执行?

如果不是,有没有办法以动态方式检索模式名称?即使数据源由 WebLogic/JBoss 管理?

4

1 回答 1

0

您可以执行语句alter session set current_schema=SCHEMA;来切换对象可见性。但这是 DDL 语句,不支持绑定变量占位符。恐怕没有JPA支持从连接池中退出连接时执行回调语句。

通常,当您想从其他模式访问对象并且不想使用模式前缀时,您会在模式中创建同义词。这是解决此类“问题”的常用方法

于 2015-05-15T18:11:47.540 回答