У меня есть следующая модель: Organization
имеет List<Contract>
, каждый Contract
может иметь pricebookId
и коллекцию PricebookEntry
. Несколько Contract
сущностей могут иметь одинаковые pricebookId
. Collection<PricebookEntry>
является результатом @OneToMany
связи с pricebookId
как JoinColumn
.
Вот постулат: Организация имеет 2 контракта, а оба контракта не имеют pricebookId
.
И вот моя проблема: во время сеанса Hibernate, в котором участвует данная конкретная организация, Hibernate выдает следующее исключение: org.hibernate.HibernateException: Found shared references to a collection: Contract.pricebookEntries
.
Действительно, оба контракта имеют pricebookEntries
установить то же самое PersistentBag
(та же ссылка).
Как я могу это исправить?
Спасибо за вашу помощь!
@Entity
public class Organization implements Serializable {
@Id
private String id;
@Fetch(FetchMode.SUBSELECT)
@OneToMany(fetch = FetchType.EAGER, mappedBy = "organization")
private final List<Contract> contracts = new ArrayList<>();
}
@Entity
public class Contract implements Serializable {
@Id
private String id;
@Column(name = "pricebook_id")
private String pricebookId;
@JoinColumn(name = "organization_id", referencedColumnName = "id")
@ManyToOne(fetch = FetchType.LAZY)
private Organization organization;
@JoinColumn(name="pricebookId", referencedColumnName = "pricebook_id")
@OneToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private final Collection<PricebookEntry> pricebookEntries = new ArrayList<>();
}
@Entity
public class PricebookEntry {
@Id
private String id;
private String pricebookId;
}