0
雙打外鍵我有父實體,例如命名爲Parent
,它擴展Base
實體,我也有孩子實體命名Children
,有關係的一個一對多的家長,這意味着Set<Children>
,但在Children
中,parent被描述爲Base
,因此hibernate在子表中創建了兩個外鍵,但是最煩人的是 - 其中一個是DELETE-CASCADE,另一個不是,導致錯誤,當我試圖刪除父母,我怎麼可以有一個外鍵(沒有嚴格的關係作爲Parent
Children
父母),或至少修復違反密鑰沒有DELETE-CASCADE?休眠在一個一對多
代碼(不是全部,只是相對的):
Base.hbm.xml:
<class name="Base" table="controls">
<id name="id">
<subclass name="Parent" discriminator-value="Parent">
<set name="items" cascade="save-update, delete-orphan" order-by="orderNumber asc" lazy="false" inverse="true" sort="natural">
<key column="controlId" on-delete="cascade"/>
<one-to-many class="children"/>
</set>
</subclass>
</class>
Children.hbm.xml:
<class name="controls.FAQItem" table="faq_item">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="base" column="controlId"/>
</class>
家長。 java:
public class Parent extends Base{
private Set<Children> items;
//getters and setters
}
Children.class:
public class Children {
private Base base;
//getters and setters
}
錯誤:
Cannot delete or update a parent row: a foreign key constraint fails
(`db_cofp`.`children`, CONSTRAINT `FK3534269CB50AD2C` FOREIGN KEY (`controlId`)
REFERENCES `controls` (`id`))
顯示創建表: *只是相對結束
KEY `FK3534269CC41202F7` (`controlId`),
KEY `FK3534269CB50AD2C` (`controlId`),
CONSTRAINT `FK3534269CB50AD2C` FOREIGN KEY (`controlId`) REFERENCES `controls` (`id`),
CONSTRAINT `FK3534269CC41202F7` FOREIGN KEY (`controlId`) REFERENCES `controls` (`id`) ON DELETE CASCADE
希望我表現出的一切事情,記泰德Base
和Children
使用id,di擴展BasicEntity類dn't寫它,因爲它只是int id
和getter和setter
我知道我可以刪除另一個鍵,一切都會正常工作,但我想這不是正確的方法 –