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
context.xml
当我在hibernate.hbm2ddl.auto
设置时启动应用程序时,validate
当框架尝试创建EntityManagerFactory
告诉我缺少表时,我得到一个异常.当我在myschema_app
连接的sql工具中直接执行select语句时,一切正常.
我知道在另一个表上使用同义词对于应用程序是透明的.有谁知道我可能忽略了什么?
我的猜测是hbm2ddl专门用于表,而不是用于同义词,但是你的应用程序确实应该像模式中存在的表一样工作.尝试删除hbm2ddl选项并测试您的应用程序.
编辑:似乎我的猜测是真的:https://forum.hibernate.org/viewtopic.php?p = 2438033
从 4.3.0 开始,可以设置hibernate.synonyms=true
同义词来解决您的问题。
参考:
https://github.com/hibernate/hibernate-orm/commit/1df4b2ea3c98c74f3b6bbd42e266ee5c7ad60d27
https://hibernate.atlassian.net/browse/HHH-8183
https://github.com/hibernate/hibernate-orm/pull/508
归档时间: |
|
查看次数: |
6951 次 |
最近记录: |