假设我有以下两个实体:
@Entity
public class Employee {
String name;
@ManyToOne Department department;
}
@Entity
public class Department {
// persisted flieds ...
@OneToMany(mappedBy="department") Collection<Employee> employees;
}
并且它们的相应表在两个不同的模式oldSchema和newSchema中定义,具有不同的内容,如下所示:
我正在使用newSchema,我正在尝试的是从oldSchema中检索一个Department实体对象,它也来自oldSchema的Employee。 我得到的是来自oldSchema的部门实体,但是来自newSchema的员工集合。
我正在使用的代码:
Query q = entityManager.createNativeQuery("SELECT * FROM
oldSchema.Department d where d.departmentID = ?", Department.class);
q.setParameter(1, depID);
try{
Department d = (Department) q.getSingleResult();
}catch(exception){}
对象d包含存储在newSchema.Employee中的Employees集合
这是由于这里针对ObjectDB https://www.objectdb.com/java/jpa/entity/schema所解释的自动模式演变,在我的情况下看起来与EclipseLink相同,如果我错了,请纠正我。
我将感激你的帮助!
在persistence.xml或orm.xml或您正在使用的任何内容中创建更多持久性单元。每个架构一个持久性单元。每个架构一个实体管理器/工厂。