Я не могу понять, как просто связать дочернюю сущность с существующим родителем.
@Entity
@Table(name = "parent")
@Document(indexName = "parent")
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "name")
private String name;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(unique = true)
private Child child;
//getters, setters
}
Ребенок
@Entity
@Table(name = "child")
@Document(indexName = "child")
public class Child implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "name")
private String name;
@OneToOne(mappedBy = "child")
private Parent parent;
//getters, setters
}
Это две основные модели.
Родитель уже существует в базе данных, и я хочу добавить нового дочернего в отношении.
Child childEntity = childRepository.save(child);
Дочерний элемент заполняется следующим образом: child.json
{
"name": "smallChild",
"parent": { "id" : "1" }
}
Я хочу иметь возможность сохранить дочерний элемент и иметь его автоматически имеющий отношение к родителю.
Я сделал какой-то очень неприятный код ...
- Сохранить ребенка без родителя для идентификатора
- Запросить базу данных для родителя по идентификатору
- Установить дочерний объект для родительского объекта
- Сохранить родительский объект с новым дочерним элементом
- Установить родительский объект для дочернего объекта
- Восстановить дочерний элемент для родительского элемента.
Это закончилось 6-ти минутными запросами к базе данных.
Я пытался посмотреть несколько видео курсов с lynda.com, но это не помогло.
Спасибо!