我有一个Hibernate项目和多个实体。每个实体都需要连接到多个数据库。 (table1,table2,table3,table4)相同的模式。
这可以实现吗?或者我是否需要为每个实体创建一个单独的实体?
我的实体看起来像这样
@Entity
public class table1{
@Id
@Column(name="name")
private String name;
@Column(name="age")
private String age;
//getters setters
}
答案 0 :(得分:2)
您可以对具有类似架构的不同数据库使用相同的实体,但必须创建指向特定数据库的EntityManager
。
以下是persistence.xml的示例代码
<persistence-unit name="DB_X">
<jta-data-source>java:/OracleDS</jta-data-source>
...
</persistence-unit>
<!-- Other Persistence Units -->
为特定单位创建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(){}
}
此处XEntity
&amp; YEntity
类似,但指向各自的表格。