Как вы сохраняете новую сущность внука в той же транзакции, что и прародитель, если родитель не сохраняется? - PullRequest
0 голосов
/ 28 мая 2019

У меня есть 3 связанных объекта GParent, Parent, Child. Родитель уже существует (раскрывающиеся данные). GParent и Child должны быть созданы в одной транзакции.

У нас есть уже существующая база данных, в которой есть некоторые статические данные, для которых требуется добавить контактную информацию при создании охватывающего объекта (GParent). Поскольку родительские данные уже существуют, я не могу каскадно добавить PERSIST для сохранения контактных (дочерних) данных.

GParent:

//bi-directional many-to-many association to Parent
@ManyToMany(cascade = {
    CascadeType.MERGE}, fetch = FetchType.LAZY)
@JoinTable(name="GPARENT_PARENT",
joinColumns=@JoinColumn(name="GPARENT_ID"), 
inverseJoinColumns=@JoinColumn(name="PARENT_ID"))
private List<Parent> parents = new ArrayList <Parent>();

Родитель:

@OneToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
@JoinTable(name = "Parent_Child", joinColumns = @JoinColumn(name = 
"PARENT_ID"), inverseJoinColumns = @JoinColumn(name = "CHILD_ID"))
private Child child;

Я понимаю, что сохранение GParent не сохранит Child (Grand-Child), так как лучше всего добавить необходимые данные в Parent?

...