У меня есть многоуровневая модель наследования в JPA, в которой используется объединенная стратегия
@Entity
@Table(name="PARTY")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="PARTY_TYPE",discriminatorType=DiscriminatorType.STRING)
public class Party implements Serializable{
...
}
@Entity
@Table(name="PARTY_ORG")
@DiscriminatorValue(value="PARTY_ORG") // value in party table's PARTY_TYPE column that dictates an Org.
@PrimaryKeyJoinColumn(name="AFF_PARTY_ORG_ID")
//how children clients and orgs willmap to us.
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="ORG_TYPE_CD")
public class PartyOrg extends Party implements Serializable{
....
}
.. продолжает занятия с детьми
Но всякий раз, когда я пытаюсь вставить, базовая база данных DB2 выдает ошибку ограничения FK, потому что PK PartyOrg также является FK, указывающим на сторону.
Это означает, что JPA должен сохранить и сбросить Party до того, как он попытается сохранить PartyOrg. (Я проверил с помощью manul SQl, что вставка PartyOrg без Party является причиной ошибки. Сначала вставка Party, затем PartyOrg (с тем же идентификатором) работает нормально.
SO
Как я могу сказать JPA в первую очередь сохранить классы верхнего уровня, чтобы соблюдать ограничение FK для дочерних классов / таблиц.