您可以将相同的实体用于具有相似架构的不同数据库,但必须创建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
&YEntity
是相似的,但指向它们各自的表。