Можно ли отключить автоматическую эволюцию схемы при использовании JPA? - PullRequest
0 голосов
/ 26 февраля 2019

Допустим, у меня есть две сущности ниже:

@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 , я пытаюсь извлечь объект сущности Department из oldSchema с его коллекцией Employee из oldSchema.
То, что я получаю, это объект Department из oldSchema, но сКоллекция Employee от 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 содержит коллекцию Employees, которая хранится в newSchema.Employee

И это из-за автоматической эволюции схемы , как описано здесь для ObjectDB https://www.objectdb.com/java/jpa/entity/schema, которая в моем случае выглядит так же, как и для EclipseLink, поправьте меня, если я пишуong.

Я буду признателен за вашу помощь!

1 Ответ

0 голосов
/ 26 февраля 2019

Создайте больше единиц персистентности в persistence.xml или в orm.xml или в том, что вы используете.Одна постоянная единица на схему.Один менеджер сущности / фабрика на схему.

...