我有一些one-to-many
关系中的实体。
父母:
@Entity
@Cacheable(false)
@Table(name="form_area")
public class FormArea {
@OneToMany(fetch = FetchType.LAZY, mappedBy="formArea", cascade = { CascadeType.MERGE, CascadeType.PERSIST })
private List<AssignableArea> assignableAreas = new ArrayList<AssignableArea>();
...
}
孩子:
@Entity
@Cacheable(false)
@Table(name="assignable_area")
public class AssignableArea {
private @ManyToOne FormArea formArea;
...
}
子对象AssignableArea在父FormArea上也具有getter / setter。
当我使用setFormArea()
重新父母时,似乎成功了,因为数据库包含正确的信息。但是,当我在FormArea上致电getAssignableAreas()
时:
public List<AssignableArea> getAssignableAreas() {
return Collections.unmodifiableList(new ArrayList<>(assignableAreas));
}
重新创建父级之前,我看到了旧列表。 当我希望看到更新的列表时,为什么会看到旧的,过时的列表?
答案 0 :(得分:1)
最可能的原因是您已经加载了InputMismatchException
及其列表FormArea
,并且您仅更新了关联的一侧,因此另一侧保持了加载状态:如果对您很重要,则有责任维护协会的双方。
如果启动新事务并重新加载FormArea,则其列表将包含正确的元素。