beibehalten wird Ich JPA-Entitäten verwenden und für die Persistenz winter. Ich habe eine Plan
Einheit und eine Escalation
Einheit. Wenn ich eine neue Eskalation erstelle und sie fortsetze, wird der Plan auch irgendwie aktualisiert. Dieses Update verursacht OptimisticLockException
und verhindert, dass weitere Eskalationen persistent werden. Hier ist der Code Skelett -geordnete Entität unnötig immer aktualisiert, wenn eine neue Kind Entität
@Entity
@Table(name = "T_ESCLT")
public class Escalation extends PersistentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ESCLT_ID")
private Integer id;
@ReflectionCopy.Exclude
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CUST_RNEW_TASK_ID", nullable = false)
private CustomerRenewalTask renewalTask;
@ReflectionCopy.Exclude
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PLN_DSG_ID")
private Plan plan;
public Escalation(CustomerRenewalTask task, Plan plan, String description) {
Preconditions.checkNotNull(task);
Preconditions.checkNotNull(description);
this.renewalTask = task;
this.plan = plan;
this.description = description;
this.creationTimestamp = DateUtils.currentTimestamp();
}
Plan
und CustomerRenewalTask
nicht Eskalation in ihnen zugeordnet haben. Als ich diesen laufe
@Transactional
public Result persist() {
CustomerRenewalTask customerRenewalTask = customerRenewalTaskDao.findById(2);
Plan plan = planDao.findById(16);
planDao.detach(plan);
Escalation escalation = new Escalation(customerRenewalTask, plan, "My Escalation");
escalationDao.persist(escalation);
return ok();
}
Ich sehe dies in dem Konsolenprotokoll
DEBUG - insert into T_ESCLT (ESCLT_ID, OPTMSTC_LOCK_ID, ATRB_NM, CMNT_TXT, CRT_TS, ESCLT_DSCR, APP_LNK_TXT, PLN_DSG_ID, RT_BLCK_IND, CUST_RNEW_TASK_ID, RSLV_DT, RSLV_BY_USR_ID, RSLV_BY_USR_NM, ESCLT_STTS_CD, ESCLT_TYP_CD) values (default, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
DEBUG - update T_PLN_DSG set OPTMSTC_LOCK_ID=?, ASSOC_PLN_DSG_ID=?, BRTH_DT_RT_IND=?, PLN_EFF_DT=?, ELGBL_MBR_CNT=?, RNEW_PLN_DTL_XML=?, SUM_MBR_PRTCP_LIF_CNT=?, VLD_STTS_CD=?, PLN_NM=?, PLN_GRP_ID=?, PRNT_PLN_DSG_ID=?, PRTCP_MBR_CNT=?, PRTCP_PCT=?, PRTNR_PLN_DSG_ID=?, RT_CALC_XML=?, UW_VRFY_IND=?, SUM_VOL_AMT=? where PLN_DSG_ID=? and OPTMSTC_LOCK_ID=?
Ich will nicht das Update auf Plan nichts ausgegeben werde auf Plan
geändert wurde. Ich habe gerade Plan verwendet, um eine Eskalation zu erstellen.
löst man etwas in planDao.detach (Plan), dass Updates attrs über den Plan Unternehmen tun könnte? – Franck
Bitte stellen Sie die Mappings für die Plan Entität und die Implementierungen der relevanten Methoden in PlanDao ein. –
per Definition, müssen Sie etwas 'Plan', die Hibernate verursacht zu denken, es ist„dirty“tun und muss auf' bündig aktualisiert werden() ' –