Joh*_*ohn 12 hibernate sessionfactory
我想知道是否有办法从会话工厂获取默认模式名称,不知何故?我需要得到它的原因是因为我必须使用一个本机SQL,并且我有多个会话工厂用于多个模式和单个数据源.所有生成的hibernate查询都由一个用户运行,该用户可以选择访问其他模式.
Joh*_*ohn 20
我刚刚发现hibernate有{h-schema}替换,可以在本机sql查询中使用.因此,当您连接到oracle数据库中的一个模式并希望针对不同模式执行查询时,这可以干净地完成工作.示例是:
select * from {h-schema}table_name
Run Code Online (Sandbox Code Playgroud)
这种方式而不是replaceAll在查询中执行手动,hibernate会处理每个会话工厂配置了"hibernate.default_schema"属性的所有事情.
在使用Criteria API的Restrictions.sqlRestriction(...)时,约翰的解决方案在使用{h-schema}时遇到了问题(可能是因为这种替换发生在单独的HQL api中)。与Michael的解决方案类似,我使用了:
SessionFactoryImplementor sfi = (SessionFactoryImplementor)sessionFactory;
String name = sfi.getSettings().getDefaultSchemaName();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17466 次 |
| 最近记录: |