Получение списка с неправильным номером элемента в Hibernate - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть класс, у которого есть список объектов, который сопоставлен с другой таблицей.

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 элемента. Есть идеи, в чем здесь проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...