我有一些合并问题。我的更新方法按照以下方式工作:
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(){...}
}
当我创建一个新的(瞬态)Parent对象并添加新的childrens,然后尝试更新(evict & merge),然后日志在刷新Hibernate会话后显示如下:
INSERT PARENT //everythings here is ok.
INSERT CHILDREN // but without parent id(id=null)
订单很好,但在插入时,子级没有父级ID。当父级在数据库中持久化时,一切正常,然后子级总是有一个良好的ID。
有什么想法可以从瞬态对象获取ID(从已持久化的对象中获取ID可以)。
问候 KZ。