JPA / Hibernate:具有多个持久性单元的模式生成

我有一个应用程序,它使用一组位于2个不同数据库中的JPA实体。 我用多个持久性单元配置它。

问题是我想使用模式生成自动生成模式,并且在两个数据库中都创建了所有实体。

我有两种PU:

   

而且,是的,我想使用元数据自动获取实体。 我不想提供手动脚本,因为我需要让它与实体保持同步。

有没有办法标记哪个实体由哪个PU生成?

-edit:请注意,在@Table上添加“schema”属性并不能解决问题,因为每个PU都会尝试在正确的模式中创建相同的实体,并且会因为表已经存在而出现错误。

是的,你可以这样做。 您需要列出每个持久单元下的实体,并使用true禁用未列出实体的自动发现。

    org.hibernate.ejb.HibernatePersistence com.your.class.A true            org.hibernate.ejb.HibernatePersistence com.your.class.B true          

编辑

如果您正在使用注释配置,那么

 LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean(); lef.setPackagesToScan("com.A"); 

另一个工厂为另一个实体经理提供不同的包名。

我找到了一种方法:我将在每个实体的@Table注释中使用“schema”属性,然后我只启用一个PU来自动生成表。