У меня проблемы со слиянием.Мой метод обновления работает следующим образом:
void update(Parent parent) {
evict(parent);
merge(parent);
}
Мои классы:
Parent {
Long id;
List<Children> childrens;
@OneToMany(targetEntity =ChildrenImpl.class, fetch=FetchType.LAZY)
@JoinColumn(name="PARENT")
@org.hibernate.annotations.Cascade(value = org.hibernate.annotations.CascadeType.ALL)
List<Children> getChildrens(){...}
@Id
Long getId() {...}
}
Children{
Parent parent;
@ManyToOne(targetEntity = ParentImpl.class, fetch = FetchType.LAZY)
@org.hibernate.annotations.Cascade(value = org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "PARENT", nullable = false)
Parent getParent(){...}
}
Когда я создаю новый родительский (временный) объект и добавляю новых детей и пытаюсь обновить (выселить и объединить) затем логи показывают мне это после сеанса спящего сброса:
INSERT PARENT //everythings here is ok.
INSERT CHILDREN // but without parent id(id=null)
Порядок хорош, но у детей нет родительского идентификатора во вставке.Все отлично работает, когда Parent сохраняется в базе данных, тогда у детей всегда есть хороший идентификатор.
Любые идеи, что я должен сделать, чтобы получить идентификатор от временного объекта (из постоянных в порядке).
С уважением KZ.