У меня есть класс, у которого есть список объектов, который сопоставлен с другой таблицей.
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;
}
Проблема в том, еслизаписи моих полей в БД, как показано ниже, когда я запрашиваю myMethod с id = 1, список myField в классе-владельце содержит 3 элемента вместо 2, а индекс 1 равен нулю.
id | my_method_id | is_optional | field_index
+---------------------------------------------------------------+
xxxxxxxxxxxxxxx | 1 | false | 2
yyyyyyyyyyyyyyy | 1 | false | 0
Итак, почему Hibernate заполняет список 3-мя элементами, хотя с my_method_id = 1 связаны две записи. Если я обновлю field_index 2 как field_index = 1 на БД, он будет работать нормально, и список будет содержать только 2 элемента. Есть идеи, в чем здесь проблема?