hibernate多个模式映射

我有一个Hibernate项目和多个实体。 每个实体都需要连接到多个数据库。 (table1,table2,table3,table4)相同的模式。

这可以实现吗? 或者我是否需要为每个实体创建一个单独的实体?

我的实体看起来像这样

@Entity public class table1{ @Id @Column(name="name") private String name; @Column(name="age") private String age; //getters setters } 

您可以对具有类似架构的不同数据库使用相同的实体,但必须创建指向特定数据库的EntityManager

  • 为每个数据库创建持久性单元。

下面是persistence.xml的示例代码

  java:/OracleDS ...   

为特定单元创建EntityManager

 @PersistenceContext(unitName="DB_X") private EntityManager xEM; @PersistenceContext(unitName="DB_Y") private EntityManager yEM; 
  • 否则,也可以在运行时创建它,如下所示。

EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName); EntityManager em = emf.createEntityManager();

之后,您可以使用具有相似模式的不同数据库的相同实体,具有适当EntityManager表结构。


编辑 :根据您的评论,与您发布的问题不同,您似乎正在尝试为多个表使用相同的实体。 下面是它的示例代码。

 @MappedSuperClass public class abstract BaseEntity { @Id @Column(name="name") private String name; @Column(name="age") private String age; //-- accessor methods } @Entity @Table(name = "XTable") public class XEntity extends BaseEntity { public XEntity(){} } @Entity @Table(name = "YTable") public class YEntity extends BaseEntity { public YEntity(){} } 

这里, XEntityYEntity类似,但指向各自的表。