Как сделать так, чтобы сохранить новую сущность без обновления старых записей - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю над этим проектом, где у нас есть система 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());

, поэтому старение мне нужно для каждогообновить или каждый «вызов», чтобы сохранить новый экземпляр и не обновлять старую запись.также, когда я пытаюсь создать новый экземпляр и сохранить его, это дает мне исключение «отдельная сущность передана для сохранения»

заранее спасибо

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