JPA Entiy是同义词而不是表

Ale*_*ühl 9 hibernate seam jpa oracle10g java-ee-5

我有一个基于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
  • 授予对来自所有必要的表对象权限myschema(常规一和两个N:M中间表)和序列根据使用(一个或多个的select,insert,update,delete),以myschema_app
  • 声明私有同义词,myschema_app以便使用与以前相同的名称并隐藏其他模式的名称前缀
  • 将属性更改hibernate.default_schema为新的模式名称persistence.xml
  • 在Tomcat的数据源定义中更改用户/密码 context.xml

当我在hibernate.hbm2ddl.auto设置时启动应用程序时,validate当框架尝试创建EntityManagerFactory告诉我缺少表时,我得到一个异常.当我在myschema_app连接的sql工具中直接执行select语句时,一切正常.

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

JB *_*zet 8

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

编辑:似乎我的猜测是真的:https://forum.hibernate.org/viewtopic.php?p = 2438033