Добрый день, имеются три вложенные сущности:
public class ProcessInformation extends StandardEntity { private static final long serialVersionUID = -1368462870266829602L; @Column(name = "NAME", nullable = false) protected String name; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PROCESS_DEFINITION_ID") protected ProcDefinition processDefinition; @Composition @OnDelete(DeletePolicy.CASCADE) @OneToMany(mappedBy = "processInformation") protected List<ProcessTaskProperties> processProperties; @Composition @OnDelete(DeletePolicy.CASCADE) @OneToMany(mappedBy = "processInformation") protected List<ProcTaskAssignment> procTaskAssignments;
public class ProcessTaskProperties extends StandardEntity {
private static final long serialVersionUID = -8181610280178441202L;@NotNull @OnDeleteInverse(DeletePolicy.CASCADE) @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) @JoinColumn(name = "PROCESS_INFORMATION_ID") protected ProcessInformation processInformation; @Column(name = "PROPERTY_TYPE") protected String propertyType; @Column(name = "PROCESS_TASK", nullable = false) protected String processTask; @Column(name = "TASK_OUTCOME") protected String taskOutcome; @Composition @OnDelete(DeletePolicy.CASCADE) @OneToMany(mappedBy = "processTaskProperties") protected Set<ProcessTaskProperty> properties;
public class ProcessTaskProperty extends StandardEntity {
private static final long serialVersionUID = 4792852034858844430L;@NotNull @OnDeleteInverse(DeletePolicy.CASCADE) @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) @JoinColumn(name = "PROCESS_TASK_PROPERTIES_ID") protected ProcessTaskProperties processTaskProperties; @Column(name = "PROPERTY", nullable = false) protected String property; @NotNull @Column(name = "PROPERTY_VALUE", nullable = false) protected String propertyValue;
при попытке сохранить сущность ProcessInformation появляется ошибка о нарушении уникальности. В классе ProcessTaskPropertiesListener был создан метод для удаления сущности из контекста, однако это не сработало, сущность сохраняется в любом случае, одна ошибка не пропадает. Что делать?
@Override public void onBeforeInsert(ProcessTaskProperties processTaskProperties, EntityManager entityManager) { if (processTaskProperties.getProcessInformation() != null) { entityManager.remove(processTaskProperties.getProcessInformation()); entityManager.flush(); }
Версия кубы 6.10.2.