我正在这个项目中,我们有版本实体系统。 例如,实体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());
如此老化,我需要进行每次更新或每个“调用”以保留一个新实例而不更新旧条目。另外,当我尝试创建一个新实例并保留它时,它给了我一个例外,即“传递给持久化的分离实体”
提前感谢