У меня есть ситуация, когда мне нужно удалить любого связанного родителя при удалении дочернего объекта и наоборот. Но по причинам «производительности» владелец не включил в объекты никаких сопоставлений JPA. Если я вручную удаляю родительский элемент перед удалением дочернего элемента, это не удается из-за ограничения FK и наоборот. Кто-нибудь может помочь? Сущности:
@Table(name = "child_node")
public class ChildNodeEntity {
@Id
private Long id;
@Column(name = "case_id")
private String caseId;
@Column(name = "parent_id", updatable = false)
private String parentId;
}
@Table(name = "parent_node")
public class ParentNodeEntity {
@Id
private Long id;
@Column(name = "case_id")
private String caseId;
}
Здесь, в дочерней сущности, parentId хранится как String (чтобы избежать проблем с производительностью, плюс родительский объект не используется нигде в проекте).
Вот код для удаления родителя из дочернего:
@Transactional
private void deleteBauCase(String caseId) {
ChildNodeEntity child = service.getChildNodeEntityById(caseId);
ParentNodeEntity parent = service.getParentNodeEntityById(caseId);
parentNodeRepository.delete(parent);
childNodeRepository.delete(child);
}
Что нужно сделать, чтобы удалить обе эти сущности? И обратный случай тоже (удалить ребенка от родителя). Я не могу использовать сопоставления @OnetoOne и каскадное удаление. Есть ли другой способ выполнить это? Ограничение внешнего ключа существует на стороне базы данных. Пожалуйста, помогите, так как я только знаком с работой с аннотациями.