我在persistence.xml中有一个使用JPA的<non-jta-datasource>连接到容器管理的Oracle数据源的项目,在某些情况下,我必须使用动态构建的原生查询。默认情况下,在Oracle中,我需要在表名中指定schema来进行查询,但是我没有访问模式名的权限(也不应该)。
首先,这是一种预期的行为吗?如果我执行SELECT * FROM TABLE,Hibernate是否应该将其重命名为Datasource参数并执行SELECT * FROM SCHEMA.TABLE?
如果不是,有没有一种方法可以直接检索模式名?即使数据源是由WebLogic/JBoss管理的?
发布于 2015-05-16 02:11:48
您可以执行语句alter session set current_schema=SCHEMA;来切换对象可见性。但这是DDL语句,不支持绑定变量占位符。当连接从连接池中退出时,恐怕没有JPA支持回调语句的执行。
通常,当您想要从其他架构访问对象,并且不想使用架构前缀时,可以在您的架构中创建同义词。这是解决这样一个“问题”的常用方法。
https://stackoverflow.com/questions/30264524
复制相似问题