我有一个类,其中包含一个对象列表,该对象列表已映射到另一个表。
public class MyMethod implements Serializable {
@Id
private String id = UUID.randomUUID().toString();
@Column
private String client;
....
@OneToMany(mappedBy = "accessMethod",cascade = CascadeType.ALL,orphanRemoval = true,fetch = FetchType.EAGER)
@OrderColumn(name = "field_index")
private List<MyField> myFields = new ArrayList<>();
}
列表中的另一个类是
@Entity
@Table(name = "My_fields")
public class MyField implements Serializable {
@Id
private String id = UUID.randomUUID().toString();
....
private String key;
private Boolean isOptional;
@Embedded
private FieldLength length;
@Column(name = "field_index")
private Integer fieldIndex = 0;
}
问题是,如果数据库上我的字段的记录如下所示,当我查询id为= 1的myMethod时,所属类中的myField列表包含3个元素而不是2个,并且索引1为空。
id | my_method_id | is_optional | field_index
+---------------------------------------------------------------+
xxxxxxxxxxxxxxx | 1 | false | 2
yyyyyyyyyyyyyyy | 1 | false | 0
所以,尽管有两个记录与my_method_id = 1相关联,所以Hibernate为什么用3个元素填充列表。如果我在数据库上将field_index 2更新为field_index = 1,则它将正常工作,并且list仅包含2个元素。知道这里出了什么问题吗?