如何解决@OrderColumn导致更新后集合中的空元素
我正在尝试维护双向映射集合的顺序。映射如下:
@Entity
public class Plate {
...
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY,mappedBy = "plate")
@OrderColumn
private List<W> wells = new ArrayList<>();
...
}
和反向映射:
@Entity
public class Well {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "plate_id")
private Plate plate;
}
第一次,我保存了Plate
实体,集合96 Well
s的所有内容都被正确保存,并且order
列填充到数据库中,从0开始一直到95。好。
不过,在随后更新到Plate
实体之后(没有真正更改任何Well
)并保存,我看到了对DB中order
列的一堆更新,结果是有96个元素从97开始索引到193。
下一次加载此类集合后,List
包含97个null
元素,后跟预期的96个实数元素(该列表现在总共有193个元素)。
要捕获的是 bug (?),当您通过它进行调试时不会显示自身,因为在调试过程中可能加载了一些惰性集合,因此很难知道根是什么原因。
我知道这可能是AbstractCollectionPersister
及其baseIndex
属性的某种原因 ,但是我不知道这可能导致Hibernate重新索引集合并从97开始而不是从0。
**编辑:** Env 休眠5.4.18。最终版 春季启动2.2.9
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。