CF9 ORM EntityDelete与外键

时间:2011-12-17 21:11:41

标签: orm coldfusion coldfusion-9

使用一对多ORM对象“艺术家”和“艺术”的常用示例,我有一个Art表,其中一列名为ArtistID,标记为“艺术家”的外键(它使用,惊喜, Artist表的主键)。当我有一个特定的艺术家(称为“thisArtist”)并尝试EntityDelete(“thisArtist”)时,我收到一个错误:

DELETE语句与REFERENCE约束“FK_Art_Artists”冲突。冲突发生在数据库“ArtistTracker”,表“dbo.Art”,列“ArtistID”中。

我非常自信我正在做一些愚蠢的事情,无论是我的关系设置还是我的语法。有没有遇到过这个?我没有看到如果EntityDelete()是一个特定艺术家的例子,如果它对Art表中的条目有外键约束。

1 个答案:

答案 0 :(得分:2)

您的艺术家可能会拥有“艺术”属性,对吗?据推测,这指向艺术CFC。您的艺术财产可能看起来像属性名称=“arts”cfc =“Art”fieldtype =“one-to-many”;

缺少的是告诉ORM如何处理删除艺术家的情况。在您的情况下,您需要在arts属性中添加“cascade”属性,如下所示:property ... cascade =“all-delete-orphan”;

然后,当您实体删除艺术家时,Hibernate还会删除任何属于该艺术家的孤立艺术元素。

创建一对多关系时,您几乎总是要指定cascade =“one-to-many”和inverse =“true”。