私が取り組んでいるアプリは、ORMとしてOracleとHibernateを使用しています。PartyUserObjectを挿入しようとすると、次のエラーが発生し続けます。
could not insert: [Person]; SQL [insert into PARTY (............)]; constraint [PARTY_FK1]
java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (PARTY_FK1) violated - parent key not found
メッセージは明白なようですが、Hibernateを構成して機能させることはできません。関連するエンティティの関係とhbm.xmlファイルは次のとおりです。
PartyUser.java
private Party ap;
Party.java
private Address address;
private Set<PartyUser> partyUsers;
PartyUser.hbm.xml
<many-to-one
name="ap"
column="AP_ID"
class="Party"
not-null="true"
lazy="false"
cascade="save-update,evict">
</many-to-one>
Party.hbm.xml
<set name="partyUsers" inverse="true" fetch="subselect">
<key column="AP_ID"/>
<one-to-many class="PartyUser"/>
</set>
PARTY_FK1は、パーティテーブルのアドレスFKを参照します。前に述べたように、新しくインスタンス化されたPartyUserオブジェクトに対してDAOでsaveが呼び出されます(関連付けられたPartyオブジェクトとAddressオブジェクトも新しいものです)。すべてのIDはJava側で生成されます。お気づきかもしれませんが、両方のエンティティでカスケードがオンになっています。
何が問題なのですか?