Orm 当JPA插入继承的对象时强制FK约束

Orm 当JPA插入继承的对象时强制FK约束,orm,inheritance,jpa,Orm,Inheritance,Jpa,我在JPA中有一个多级继承模型,它使用连接策略 @Entity @Table(name="PARTY") @Inheritance(strategy=InheritanceType.JOINED) @DiscriminatorColumn(name="PARTY_TYPE",discriminatorType=DiscriminatorType.STRING) public class Party implements Serializable{ ... } @Entity @Table(na

我在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约束错误,因为PartyRog的PK也是一个指向Party的FK

这意味着JPA必须在试图坚持PartyRog之前坚持并刷新Party。我已经用manul SQl验证过,插入没有参与方的PartyRog是错误的原因。首先插入Party,然后插入具有相同ID的PartyRog即可

所以


我如何告诉JPA首先持久化顶级类以尊重子类/表上的FK约束

发现了问题

DB2数据库正在为PKs使用浮点。当我的DBA说使用浮动时,我从来没有停止考虑DB Word和java世界之间的不匹配。事实证明,DB2浮动应该反过来调用Java双精度。我把所有的钥匙都换成双键后,一切都正常了

我只能猜测,浮动中的舍入问题导致FK不匹配——但这纯粹是猜测