2015-01-04 2 views
0

Мой объект как ..добавляющие дочерние объекты в oneToMany односторонняя таблицу соединения

@Entity 
public class parent{ 
@id 
private string id; 
private string name; 
@OneToMAny 
List<Child> children = new ArrayList<Child>(); 

//getters n setters 
} 

после сохранения родителя, если я хочу, чтобы добавить ребенка, то мне нужно сделать, как

Parent parent = parentRepository.findOne(parentId);  
if(parent != null){ 
     parent.getChildren().add(new Child("Id","name")); 
} 

, как мы видим, Мне нужно получить все дочерние элементы parent.getChildren(), а затем добавить новое, предположим, что у меня большая запись в дочерней таблице, является ли это подходящим способом для добавления дочернего элемента ?? Есть ли хороший способ добавить нового ребенка. Я не могу использовать oneToMAny, сопоставленный здесь, потому что есть еще одна сущность, которая имеет тот же дочерний объект (Child), что и дочерний список, поэтому я не могу изменить свой дочерний объект, добавив столбец внешнего ключа, и мне нужно идти только с joinTable .Я с помощью JPA + Spring + Hibernate

+0

Тот факт, что вы не можете добавить внешний ключ, не мешает вам сделать связь двунаправленной. Вам просто нужно сопоставить его с помощью '@ JoinTable', чтобы сообщить JPA, что вы хотите использовать таблицу соединений, а не столбец join. –

+0

Благодарю вас за комментарий yr, я понятия не имел, что мы также можем указать JoinTable на стороне ManyToOne. –

ответ

0

Ваш вопрос не очень понятно: /, но от того, что я понимаю:

Один из родителей имеет много детей. У одного ребенка много родителей.

Это отношение «многие ко многим».

Вы можете сделать:

Entities: родитель, ребенок, ParentChild

  • Родитель = OneToMany типа ParentChild
  • Ребенок = OneToMany типа ParentChild
  • ParentChild = ManyToOne типа Parent и Ребенок

Вы можете сохранить ParentChild самостоятельно без выборки список.

Или у вас может быть рекурсивный стол.

  • Лицо: ManyToOne своего родителя.
Смежные вопросы