EMF で実装され、teneo/hibernate/MySQL で永続化されたかなり複雑なドメイン モデルがあります。モデルのサブツリー (「包含」という意味でのサブツリー) があり、サブツリーの要素はサブツリーの外部から参照されません (サブツリーに「包含」されている要素から、サブツリーに「包含」されている他の要素への参照のみ)。サブツリー)。
サブツリーを削除し、それが含まれているコレクションからルート要素を削除したいと考えています。すべての参照がサブツリー内にあるため、問題なく動作することを期待しています。とにかく、MySQL から外部キー違反が発生したという例外が発生します。したがって、削除は失敗します。削除プロセスは機能すると予想されますか? それとも、teneo/hibernate は、要素を正しい順序で削除するほど賢くないのでしょうか?
例外メッセージ:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`ide`.`equip_equipment`, CONSTRAINT `equip_equipment_usagedomain` FOREIGN KEY (`component_ud_id`) REFERENCES `ud_component` (`id`))
更新: 私のカスケード ポリシーは次のとおりです。
hibernateProperties.setProperty(PersistenceOptions.CASCADE_POLICY_ON_CONTAINMENT, "ALL");
hibernateProperties.setProperty(PersistenceOptions.CASCADE_POLICY_ON_NON_CONTAINMENT, "REFRESH,PERSIST,MERGE");
hibernateProperties.setProperty(PersistenceOptions.INHERITANCE_MAPPING, InheritanceType.SINGLE_TABLE.getName());
hibernateProperties.setProperty(PersistenceOptions.ADD_INDEX_FOR_FOREIGN_KEY, Boolean.TRUE.toString());