У меня есть несколько сущностей, у которых есть ссылка на один и тот же экземпляр другого объекта-сущности, например:
@Data
@Entity
@OnDelete(action = OnDeleteAction.CASCADE)
class A {
@Id
private Long id;
}
@Data
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract class B {
@Id
private Long id;
@OnDelete(action = OnDeleteAction.CASCADE)
@ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.REMOVE)
private A a;
}
@Data
@Entity
class C extends B {
}
@Data
@Entity
class D extends B {
}
Моя проблема в том, что я просто хочу удалить каскадный экземпляр A
.Количество сущностей, ссылающихся на A, не известно заранее.Но я не могу получить эту работу, внешний ключ не будет иметь директиву удаления каскада.И я не могу сделать двунаправленное сопоставление.
РЕДАКТИРОВАТЬ 1: В конечном итоге возникает проблема, потому что все сущности фактически расширяют другую сущность.