JPA / Hibernate:具有多个持久性单元的模式生成
我有一个应用程序,它使用一组位于2个不同数据库中的JPA实体。 我用多个持久性单元配置它。
问题是我想使用模式生成自动生成模式,并且在两个数据库中都创建了所有实体。
我有两种PU:
而且,是的,我想使用元数据自动获取实体。 我不想提供手动脚本,因为我需要让它与实体保持同步。
有没有办法标记哪个实体由哪个PU生成?
-edit:请注意,在@Table上添加“schema”属性并不能解决问题,因为每个PU都会尝试在正确的模式中创建相同的实体,并且会因为表已经存在而出现错误。
是的,你可以这样做。 您需要列出每个持久单元下的实体,并使用
禁用未列出实体的自动发现。
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来自动生成表。