J'ai un modèle d'héritage à plusieurs niveaux dans JPA qui utilise la stratégie rejointImposer FK contraintes lors des inserts JPA objets hérités
@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{
....
}
..continues avec des classes d'enfants
Mais chaque fois que je tente d'insérer, le la base de données DB2 sous-jacente renvoie une erreur de contrainte FK car le PK de PartyOrg est également un FK pointant vers Party.
Cela signifie que JPA doit persiste et rincer Parti avant de tenter de persister PartyOrg. (Je l'ai vérifié avec manul SQl que l'insertion d'un PartyOrg sans parti est la cause de l'erreur. Insérer Party, puis un PartyOrg (avec la même ID) fonctionne très bien.
SO
Comment puis-je dire JPA persister des classes de niveau supérieur d'abord à respecter la contrainte FK sur les enfants classes/tables.