Сначала я новичок с БД в целом, поэтому, если это окажется глупым вопросом, будьте немного терпимы и щедры с деталями в ур-ответ и спасибо за много любые усилия, чтобы помочь!JPA: Создайте несколько родительских отношений с одним ребенком на GAE
У меня возникли проблемы с созданием структуры классов для моего кода и приветствую любые предложения по этому вопросу. У меня есть 3 классов данных
1) Школа
2) Учитель
3) Мастерской
Школа Entity имеет List<Teacher>
и List<Workshop>
они организованы.
A Workshop Entity имеет единственную участвующую школьную организацию и List<Teacher>
участников.
Учитель Entity был List<Workshop>
они присутствовали и трудовой истории List<School>
(не показывая школьный список в коде ниже, как я оставить его на потом, когда я понять простые вещи первой, но его цель)
Каждой школе в данном городе будет назначена одна запись, и не более того, все остальное от Учителя и Семинара должно ссылаться на эту единую запись. не
Каждый учитель в данном городе будут назначены на въезд/счет, и не больше, так что все остальное должно ссылаться на него
Я знаю, что я могу работать с идентификаторами, но будет включать в себя тонны дублирования и я не сможет получить объект из другого объекта, запись будет длинной, и даже если я создам методы для автоматизации всего этого, это очень быстро избавит мои квоты запросов (было бы очень интересно избежать этого)
Я хотел был бы иметь возможность запросить для одного сущности (школы или учителя или мастерской) и иметь возможность увидеть все другие связанные списки сущностей.
Плюс, Учителя передвигаются, поэтому я должен быть в состоянии удалить Учителя (как дочернюю организацию) из одной школы и добавить его в другую, сохранив при этом запись о том, какая школа проводила свои предыдущие семинары.
Я это много сделан по моему собственному
@Entity
public class School
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long ID;
@OneToMany(cascade = CascadeType.ALL, mappedBy="school")
private List<Teacher> teachers;
@OneToMany(cascade = CascadeType.ALL,mappedBy="school")
private List<Workshop> workshops;
// Getters and Setters and some methods
}
@Entity
public class Teacher
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@ManyToOne
private School school;
private List<Workshop> Workshops;
// Getters and Setters and some methods}
@Entity
public class Workshop
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@ManyToOne
private School school;
private List<Teacher> Participants;
// Getters and Setters and some methods}
В настоящее время я могу назначить стольких учителей и семинары для конкретной школы лица, однако, я не могу назначить учитель объектов (которые уже назначены к Школа - ключевой пункт здесь) к Мастерской. Это ошибка, я всегда получаю
Обнаружена попытке установить Workshop (не-ID-пока) в качестве родителя школы (6148469022523392)/Учителя (5585519069102080), но лиц, идентифицированных школа (6148469022523392)/Учитель (5585519069102080) уже является ребенком школы (6148469022523392). Родитель не может быть установлен или изменен после сохранения объекта.
Порядок, который зависит от того, какой объект Entity был создан и сохранен первым.
Спасибо большое и ожидаю консультаций и консультаций ...Я не ищу полного решения, мне просто нужен кто-то, чтобы указать, как это можно сделать (я уверен, что я не первый, кто застрял здесь, и я уверен, что щедрые эксперты помогут)
Во-первых, Спасибо большое за ваш ответ ... Я попробовал почти все, что мог придумать, но все же застрял с ** Обнаружил попытку создать школу (6337585022500864) в качестве родителя школы (6337585022500864)/Мастерская (4930210138947584))/Учитель (6056110045790208), но субъект, идентифицированный Школой (6337585022500864)/Мастерская (4930210138947584)/Учитель (6056110045790208) уже является ребенком школы (6337585022500864)/Мастерская (4930210138947584). Родитель не может быть установлен или изменен после того, как объект был сохранен. ** –
Я не совсем уверен, как это сделать, используя двунаправленные отношения. Моя проблема заключается в том, что я хочу, чтобы учитель был ребенком какой-то школы «Школа (6337585022500864)», но также был ребенком Семинара, организованного какой-то другой/той же школой «Школа» (6337585022500864)/Мастерская (4930210138947584)/Учитель (6056110045790208)) '... Это можно сделать легко с помощью базы данных ID и множества методов, однако я не смогу запросить значение свойства ANY, поскольку свойства будут только идентификаторами. Я отправлю код сервлета ниже –
'em.getTransaction(). Begin(); Школьная школа = новая школа(); school.setName («Школа 1»); Список teachers = new ArrayList (); Преподаватель учителей = новый Учитель(); teacher.setName («Учитель 1»); teachers.add (учитель); Преподаватель учителей1 = новый Учитель(); teacher.setName («Учитель 2»); teachers.add (teacher1); учитель учитель2 = новый Учитель(); teacher.setName («Учитель 3»); \t \t учителей.добавить (teacher2); Мастерская ws = new Workshop(); ws.set Участники (преподаватели); \t \t school.setTeachers (преподаватели); Список wss = new ArrayList (); wss.add (ws); school.setWorkshops (wss); ' –