我有一个项目使用<non-jta-datasource>
中的JPA persistence.xml
连接到容器管理的Oracle数据源,我必须在某些时候使用动态构建的本机查询。默认情况下,我需要在表名中指定schema
来进行查询,但我无权访问模式名称(不应该)。
首先,这是预期的行为吗?如果我执行SELECT * FROM TABLE
,Hibernate是否应将其重命名为Datasource参数并执行SELECT * FROM SCHEMA.TABLE
?
如果不是,有没有办法在dinamycally检索模式名称?即使数据源是由WebLogic / JBoss管理的?
答案 0 :(得分:0)
您可以执行语句alter session set current_schema=SCHEMA;
来切换对象可见性。但这是DDL语句,不支持绑定变量占位符。我担心当从连接池中取消连接时,没有JPA支持执行回调语句。
通常,当您希望从其他架构访问对象并且您不想使用架构前缀时,则可以在架构中创建同义词。这是如何解决这样一个问题的常用方法&#34;