Мой код с участием 3 объектов:Странное поведение от Hibernate с OneToMany отношений
@Entity
public class Data implements Serializable {
...
@OneToMany(cascade={CascadeType.ALL},fetch = FetchType.EAGER,
targetEntity = Bit.class,mappedBy = "data")
private Collection<Bit> bit;
@OneToMany(cascade={CascadeType.ALL},fetch = FetchType.EAGER,
targetEntity = Linked.class,mappedBy = "data")
private Collection<Linked> linked;
}
@Entity
public class Linked implements Serializable {
...
@EmbeddedId
private LinkIdPK id;
@ManyToOne(optional=true,fetch = FetchType.EAGER,targetEntity = Data.class)
private Data data;
}
@Entity
public class Bit implements Serializable {
...
@EmbeddedId
private BitIdPK id;
@MapsId("data")@ManyToOne(optional=true,targetEntity = Data.class)
private Data data;
Я выполнить поиск с использованием хранилища Spring для того, чтобы получить один экземпляр данных. Я знаю, что элемент, который я запрашиваю из базы данных, имеет элементы «3 бит» и элемент «1 Связанный» в базе данных.
Когда я перехожу через элементы бит в Data.bit
, я нахожу 3 элемента, что нормально.
Но когда я перебираю связанные элементы в Data.linked
, я нахожу 3 элемента, которые указывают на один и тот же объект, тогда как я ожидал всего 1 элемент.
Я попытался добавить 1 бит элемента в базу данных, и теперь я нахожу 4 элемента в Data.linked
, указывая на один и тот же объект.
Это нормальное поведение? Это ошибка в моем коде, или это ошибка в Hibernate?