我有以下Hibernate实体
<!-- language: java -->
@Entity(name = "Someentity")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class SomeEntity extends SPCEntity{
@OneToMany(fetch = FetchType.LAZY, mappedBy = "bom", cascade = CascadeType.ALL, orphanRemoval=true)
private final Set<Note> notes = new HashSet<>();
public void setNotes(final Set<Note> notes) {
this.notes.clear();
this.notes.addAll(notes);
}
}
相应的注释类
@Entity(name = "NOTE")
public class BomNote extends Note {
@ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = {CascadeType.PERSIST})
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinColumn(name = "bom_id")
private SomeEntity bom;
... getters and setters...
}
对于音符集合使用final是否有风险,并且在添加所有已回复的音符之前清除音符组会有风险。
据我所知 - 不是要修改hibernate提供的持久集合。使用此解决方案,hiberate列表永远不会在对象中设置,但它始终使用初始列表对象。
这可能会导致hibernate的副作用混乱,特别是对于级联类型ALL?
提供任何帮助和建议。