разделение записей по значению столбца других таблиц в jpa

#java #spring-boot #hibernate #jpa #join

Вопрос:

я разрабатываю приложение для загрузки спринта с использованием jpa. у меня есть 4 таблицы с именами A, B, C и D, примерно перечисленные ниже. Таблицы A и B относятся к таблице C (оба отношения один ко многим), а таблица C относится к таблице D (многие к одному).

структуры таблиц, как показано ниже;

 A {id, ...}
B {id, ...}
C {ref_id, type_id, ...} --ref_id could be A.id or B.id depends on D.type_val, type_id refers to D.id
D {id, type_val, ...} --type_val could be string 'A' or 'B'. if it is 'A', C record belongs to A else B 
 

Классы сущностей JPA, которых я не могу достичь, создают отношения, объединяющие сущности.

 A
  List<C> itemList

B
  List<C> itemList

C
  A itemA
  B itemB
  D itemType

D
  id
  type_val
 

как я могу реализовать эти классы сущностей jpa в этом senario? как я могу разделить данные C на A и B в зависимости от значения типа D?

Спасибо.