使用JPA时是否可以禁用自动模式演变?

时间:2019-02-26 11:27:48

标签: java jpa eclipselink jpa-2.0 jpa-2.1

比方说,我下面有两个实体:

@Entity
public class Employee {
String name;
@ManyToOne Department department;
}

@Entity
public class Department {
// persisted flieds ...
@OneToMany(mappedBy="department") Collection<Employee> employees;
}

及其对应的表在两个不同的架构 oldSchema newSchema 中定义,它们的内容不同,如下所示:

  • oldschema.Department,oldSchema.Employee
  • newSchema.Department,newSchema.Employee

我正在使用 newSchema ,  我想做的是也从oldSchema中检索Department实体对象,它也从oldSchema中检索出雇员集合。
我得到的是来自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

这是由于自动模式演变所致,如此处针对ObjectDB https://www.objectdb.com/java/jpa/entity/schema所述,在我看来,它与EclipseLink相同,如果我错了,请纠正我。

我会很感激您的帮助!

1 个答案:

答案 0 :(得分:2)

在persistence.xml或orm.xml或您正在使用的任何内容中创建更多持久性单元。每个架构一个持久性单元。每个架构一个实体经理/工厂。

相关问题