Tengo una aplicación que administra 3 bases de datos. Yo uso hibernate con JPA en el marco de costura.Hibernate/JPA: asignando entidades a bases de datos diferentes
Así que tengo un archivo persitence.xml con tres persitence unidad como esta (que quitar propiedades para DB2 y 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>
En mi archivo components.xml costura, creo 3-persistencia gestionada -contexto para mapear costura con mi configuración de hibernación.
Finalmente, tengo varias entidades y mi problema está aquí. Necesito persistir algunas entidades en db2 y otras en db3. Así esquema de base son diferentes y cuando despliego mi solicitud, me sale este error:
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
Porque, la PORTAILPERMISSION tabla no existe en DB2.
Mi pregunta es:
cómo especificar en la clase de entidad de lo que la base de datos (o persitence-unidad) deben ser utilizados para validar la entidad en el arranque?
Gracias por su ayuda.
¿Cómo puedo desactivar la autodetección? – Kiva
@Kiva ver mi actualización – Bozho
Gracias, agrego esto y todo funciona bien :) – Kiva