如何在不更新旧条目的情况下永久保留一个新实体

时间:2018-11-19 14:22:39

标签: java hibernate jpa

我正在这个项目中,我们有版本实体系统。 例如,实体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());

如此老化,我需要进行每次更新或每个“调用”以保留一个新实例而不更新旧条目。另外,当我尝试创建一个新实例并保留它时,它给了我一个例外,即“传递给持久化的分离实体”

提前感谢

0 个答案:

没有答案