gpt4 book ai didi

hibernate - JPA 实体基于同义词而不是表

转载 作者:行者123 更新时间:2023-12-02 22:13:54 25 4
gpt4 key购买 nike

我有一个基于 Seam 2.2 的 Java EE 5 Web 应用程序,其中有一堆表通过 Hibernate 3.3.3 映射到 JPA 1.0 实体。在开发过程中,它在 Tomcat 6、Oracle 10 XE 和 Windows 7 上运行。

现在,我们收到运营部门的请求,将数据模型拆分为一种模式,作为所有数据库对象的所有者 (myschema) 和一种作为应用程序的数据库用户的模式 ( myschema_app)。所以我做了以下事情:

  • 创建架构myschema_app
  • 根据使用情况(select 中的一个或多个, 插入更新删除)到myschema_app
  • myschema_app 中声明私有(private)同义词,以便使用与以前相同的名称并隐藏其他架构的名称前缀
  • 将属性 hibernate.default_schema 更改为 persistence.xml 中的新架构名称
  • 更改 context.xml 中 Tomcat 数据源定义中的用户/密码

当我在将 hibernate.hbm2ddl.auto 设置为 validate 的情况下启动应用程序时,当框架尝试创建 EntityManagerFactory 时,我会收到异常code> 告诉我缺少一个表。当我直接在连接了 myschema_app 的 SQL 工具中执行 select 语句时,一切正常。

我知道在另一个表上使用同义词对于应用程序来说是透明的。有谁知道我可能忽略了什么?

最佳答案

我的猜测是 hbm2ddl 专门搜索表,而不是同义词,但您的应用程序确实应该像表存在于模式中一样工作。尝试删除 hbm2ddl 选项并测试您的应用程序。

编辑:看来我的猜测是正确的:https://forum.hibernate.org/viewtopic.php?p=2438033

关于hibernate - JPA 实体基于同义词而不是表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8817253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com