相关疑难解决方法(0)

#Hibernate hbm2ddl.auto配置的可能值是什么,它们做了什么

我真的想知道更多有关更新,导出和可以提供给hibernate.hbm2ddl.auto
我需要知道何时使用更新的值的更多信息,何时不知道?还有什么选择?

这些是可能发生在DB上的变化:

  • 新表
  • 旧表中的新列
  • 列已删除
  • 列的数据类型已更改
  • 列的类型更改了其属性
  • 桌子掉了
  • 列的值已更改

在每种情况下,最佳解决方案是什么?

java hibernate hbm2ddl

1046
推荐指数
10
解决办法
97万
查看次数

Hibernate @Formula不包含Schema

我有一个带有@Formula属性的实体,如下所示:

@Entity
@Table(name = "areasAuxiliar")
public final class AreaAuxiliar implements Serializable {

    @Id
    @Column(name = "idArea")
    private Integer idArea;

    @Formula("RUTAAREA(idArea)")
    private String ruta;
Run Code Online (Sandbox Code Playgroud)

当我将我的hibernate配置为指向Oracle DB时我没有问题,但是,当我切换到SQLServer时,hibernate不包括shema并且查询失败,

为hibernate生成的查询如下所示:

select
    areaauxili4_.idArea as idArea1_6_4_,
    rutaArea(areaauxili4_.idArea) as formula2_4_
from
    SIGAP.areasAuxiliar areaauxili4_ 
Run Code Online (Sandbox Code Playgroud)

param hibernate.default_schema =正在读取SIGAP并将其包含在表中但不包含在函数中,

是否有一个选项/注释来强制shema进入该函数?

我尝试过hibernate 5.1和5.2,结果相同:(

java sql-server hibernate jpa hql

9
推荐指数
2
解决办法
1013
查看次数

如何在纯JPA中为本机查询配置默认数据库模式?

我们的情况如下:

  • 我们使用(必须纯粹的)JPA来持久化我们的企业应用程序.
  • 由于性能原因,我们在这里使用了许多相当复杂的本机查询.
  • 访问数据库(Oracle 11g)时,我们使用的数据库用户APP_ACCESS与表(APP_OWNER)的"所有者"不同.这是数据库管理的一项硬性要求.
  • 目前,模式名称(APP_OWNER)被硬编码到本机查询中,a-la:

"SELECT * FROM " + DatabaseSchemaConstants.SCHEMA_NAME + ".LOCATION"

毋庸置疑,我们对此硬编码并不特别满意,因为"所有者"用户名的更改意味着代码中的更改 - 这对于维护来说绝对不利.

所以这是我的问题:

我们如何在纯JPA中为本机查询配置默认数据库模式?

这是我到目前为止发现的:

如何在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代码中的硬编码更好).

另一篇帖子有类似答案:

JPA - EclipseLink - 如何更改默认架构

还有一个问题:

从会话工厂以编程方式获取hibernate默认模式名称?

看到这个建议使用的答案{h-schema}.看起来很合适,但它是特定于Hibernate的.我们想继续使用"纯JPA".另一个问题是我在Hibernate文档中找不到{h-schema}的任何提及,因此我们依赖此功能是不安全的.

是否有标准的JPA方式为所有内容设置默认数据库架构 - JPA entites和查询以及本机查询

或者,如果我们能够在我们的本机查询中使用配置中的某些"参数"或"设置",则可以解决此问题.

java oracle hibernate jpa native-sql

8
推荐指数
1
解决办法
6681
查看次数

标签 统计

hibernate ×3

java ×3

jpa ×2

hbm2ddl ×1

hql ×1

native-sql ×1

oracle ×1

sql-server ×1