lex*_*ore 8 java oracle hibernate jpa native-sql
我们的情况如下:
APP_ACCESS与表(APP_OWNER)的"所有者"不同.这是数据库管理的一项硬性要求.APP_OWNER)被硬编码到本机查询中,a-la:"SELECT * FROM " + DatabaseSchemaConstants.SCHEMA_NAME + ".LOCATION"
毋庸置疑,我们对此硬编码并不特别满意,因为"所有者"用户名的更改意味着代码中的更改 - 这对于维护来说绝对不利.
所以这是我的问题:
我们如何在纯JPA中为本机查询配置默认数据库模式?
这是我到目前为止发现的:
具体来说,这个答案提出了持久性单元和orm.xml文件的组合:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>myschema</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
Run Code Online (Sandbox Code Playgroud)
但我认为这不适用于本机查询(我们目前正在测试它).这里的另一个问题orm.xml是不是真的用于配置.(但它仍然比Java代码中的硬编码更好).
另一篇帖子有类似答案:
还有一个问题:
看到这个建议使用的答案{h-schema}.看起来很合适,但它是特定于Hibernate的.我们想继续使用"纯JPA".另一个问题是我在Hibernate文档中找不到{h-schema}的任何提及,因此我们依赖此功能是不安全的.
是否有标准的JPA方式为所有内容设置默认数据库架构 - JPA entites和查询以及本机查询?
或者,如果我们能够在我们的本机查询中使用配置中的某些"参数"或"设置",则可以解决此问题.
cod*_*kix 14
这个问题可能已经过时了,但回答以防你仍然遇到这个问题.您可以使用{h-schema}本机SQL查询(验证Hibernate v4).这由hibernate.default_schema配置属性定义.
例:
"SELECT * FROM {h-schema}LOCATION"
Run Code Online (Sandbox Code Playgroud)
参考:https: //vladmihalcea.com/how-to-resolve-the-hibernate-global-database-schema-and-catalog-for-native-sql-queries/
| 归档时间: |
|
| 查看次数: |
6681 次 |
| 最近记录: |