java - 使用 JPA 时是否可以禁用自动模式演化?

标签 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;
}

及其相应的表在两个不同的模式oldSchemanewSchema中定义,具有不同的内容,如下所示:

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

我正在使用newSchema, 我想做的是从 oldSchema 中检索一个 Department 实体对象,以及它的 Employee 集合。
我得到的是来自旧模式的部门实体,但具有来自新模式的员工集合。

我正在使用的代码:

 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 或您使用的任何内容中创建更多持久性单元。每个模式一个持久性单元。每个模式一个实体管理器/工厂。

关于java - 使用 JPA 时是否可以禁用自动模式演化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54884492/

相关文章:

hibernate - Hibernate使用flushMode = AUTO查询要慢得多,直到调用clear()为止

java - JPA/EclipseLink 与 MySQL 的并发问题

java - 向路径添加双斜杠

Java 比较忽略大小写

java - setMaxResult 无法在带有 Hibernate 的 MSSQL Server 2014 中工作

mysql - 更新一堆行是基于事务还是基于行?

java - 具有大量列的 MySQL JPA 查询运行速度比预期慢得多

java - 刷新文本时保持 EditorPane 中的先前位置

java - Maven 无法转换为 javax.servlet.Filter

mysql - @GeneratedValue 不起作用。 "java.sql.SQLException: Field ' ID'没有默认值”