Я работаю над этим проектом, где у нас есть система Versioned Entities .что, например, сущность A имеет отношения к сущности B и C. Когда мне нужно изменить какое-либо значение одной из этих трех сущностей, создается новая версия Версии A с новыми строками, ссылающимися на новые B и C.
это требование постоянно отслеживать каждую сущность и ее отношения.
Проблема теперь в том, что когда я создаю новую сущность и пытаюсь изменить одну из других сущностей, которые имеют к ней отношение, эти сущности просто обновляются, но новая запись не создается.просто создается новая запись для объекта-владельца - здесь есть A-, но не для связанных с ним объектов, скажем, B и C.
код для этого следующий: предполагается, что этот объект является объектом-владельцем
@Entity
public class DpmCompany extends AbstractDpmVersionedEntity {
@OneToOne(mappedBy = "company")
private ContactData officialAddress = new ContactData();
@OneToMany(mappedBy = "company")
@JsonIgnore
private List<Document> relatedDocumentList = new ArrayList<Document>();
@OneToMany(mappedBy = "company")
@JsonIgnore
private List<DpmContact> contactsList = new ArrayList<DpmContact>();
и
@Entity
public class ContactData extends AbstractDpmSimpleEntity{
@OneToOne
@JoinColumns({
@JoinColumn(name = "FK_CONTACTDATA_COMPANY_ID", referencedColumnName="DPM_ID"),
@JoinColumn(name = "FK_CONTACTDATA_COMPANY_VERSION", referencedColumnName="DPM_VERSION")}
)
private DpmCompany company;
и
@Entity
public class Document extends AbstractDpmSimpleEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "FK_COMPANY_ID", referencedColumnName="DPM_ID", updatable=false),
@JoinColumn(name = "FK_COMPANY_VERSION", referencedColumnName="DPM_VERSION", updatable=false)}
)
@JsonIgnore
private DpmCompany company;
, и это мой код для сохранения
private void saveRelatedDocuments(DpmCompany company) {
if (company.getRelatedDocumentList() != null) {
for (Document doc : company.getRelatedDocumentList()) {
doc.setCompany(company);
documentDao.persist(doc);
}
}
}
company.getOfficialAddress().setCompany(company);
contactDataDao.persist(company.getOfficialAddress());
, поэтому старение мне нужно для каждогообновить или каждый «вызов», чтобы сохранить новый экземпляр и не обновлять старую запись.также, когда я пытаюсь создать новый экземпляр и сохранить его, это дает мне исключение «отдельная сущность передана для сохранения»
заранее спасибо