在我的例子中,每当我执行查询时,都会在会话中设置默认模式。
因此,通过使用EntityManager
本地查询,我将根据我的请求使用更新的模式更改会话。
CreateNativeQuery(alter session set current_schema = some_name);
在成功更新后,当我运行我的查询时,它返回的是默认模式而不是更新后的模式?
select sys_context('userenv' , 'current schema') from dual;
我知道spring connection pool在默认情况下创建了这个模式,但是我的问题是,无论如何都可以从代码中动态地更新模式吗
1条答案
按热度按时间rseugnpd1#
set current_schema
函数仅在查询中没有完全限定对象名称时更改所使用的默认模式,因此会和
set current_schema
不会更改您实际连接到的架构/用户,因此您的安全配置文件也不会更改。完全限定对象引用也被认为是最佳实践,特别是当它们与您登录的架构不同时。此外,如果您使用的是连接池,则更改会话只会影响发出命令时碰巧正在使用的一个线程。下次从连接池中获取不同的连接线程时,您将拥有一个具有原始会话参数的不同物理数据库连接。