[英]Hibernate/JPA: Mapping entities to different databases
我有一個管理3個數據庫的應用程序。 我在seam框架上使用了帶JPA的hibernate。
所以我有一個persitence.xml文件,有三個像這樣的persitence-unit(我刪除了db2和db3的屬性):
<persistence-unit name="db1" transaction-type="JTA" >
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>db1source</jta-data-source>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.connection.driver_class"
value="oracle.jdbc.driver.OracleDriver" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.default_schema" value="SI_TEC" />
<property name="hibernate.validator.apply_to_ddl" value="false" />
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
</properties>
</persistence-unit>
<persistence-unit name="db2" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>d2source</jta-data-source>
</persistence-unit>
<persistence-unit name="db3" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>d3source</jta-data-source>
</persistence-unit>
在我的seam components.xml文件中,我使用我的hibernate配置創建了3個managed-persistence-context來映射seam。
最后,我有幾個實體,我的問題就在這里。 我需要在db2和db3中的其他實體中保留一些實體。 所以數據庫模式是不同的,當我部署我的應用程序時,我收到此錯誤:
org.hibernate.HibernateException: Missing table: PORTAILPERMISSION
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1113)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
Truncated. see log file for complete stacktrace
因為,db2中不存在表PORTAILPERMISSION。
我的問題是:
如何在實體類中指定在啟動時必須使用哪個數據庫(或persitence-unit)來驗證實體?
謝謝你的幫助。
您嘗試在每個持久性單元中顯式列出類( <class>..</class>
)。 並使用
<exclude-unlisted-classes>true</exclude-unlisted-classes>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.