Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate @OrderColumn在更新后在集合中导致空元素_Hibernate_Spring Data - Fatal编程技术网

Hibernate @OrderColumn在更新后在集合中导致空元素

Hibernate @OrderColumn在更新后在集合中导致空元素,hibernate,spring-data,Hibernate,Spring Data,我试图维持双向映射集合的顺序。映射如下: @Entity public class Plate { ... @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "plate") @OrderColumn private List<W> wells = new ArrayList<>(); ... } 我第一次保存图版

我试图维持双向映射集合的顺序。映射如下:

@Entity
public class Plate {
    ...
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "plate")
    @OrderColumn
    private List<W> wells = new ArrayList<>();

    ...
}
我第一次保存
图版
实体时,96个
井的集合
s所有内容都正确保存,并且
顺序
列从0开始填充到95。一切都好

在随后更新到
板块
实体之后(没有真正更改任何
)并保存后,我看到对DB中的
顺序
列进行了一系列更新,导致96个元素从97开始索引到193

因此,在下一次加载此类集合后,
列表
包含97个
null
元素,后面是预期的96个实元素(该列表现在总共有193个元素)

问题是,在调试过程中,bug(?)不会暴露出来,因为可能在调试过程中加载了一些惰性集合,因此很难判断根本原因

我知道这可能是由
AbstractCollectionPersister
及其
baseIndex
属性驱动的,但我不知道什么会导致Hibernate重新索引集合,并从97开始,而不是从0开始

**编辑:*环境 冬眠5.4.18.1决赛
Spring boot 2.2.9

您使用的是什么hibernate版本?使用env infoIt更新了问题,看起来与问题相同。
@Entity
public class Well {
    ...
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "plate_id")
    private Plate plate;
}