簡體   English   中英

Hibernate / JPA:將實體映射到不同的數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM