Как удалить каскад, используя отношение @ManyToOne, используемое вместе с @Inheritance - PullRequest
0 голосов
/ 04 марта 2019

У меня есть несколько сущностей, у которых есть ссылка на один и тот же экземпляр другого объекта-сущности, например:

@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: В конечном итоге возникает проблема, потому что все сущности фактически расширяют другую сущность.

...