2011-08-16 286 views
1

我在這裏堅持使用外鍵約束。不管是什麼我指定級聯行爲或belongsTo/hasMany,我得到一個外鍵約束錯誤Grails級聯刪除?

我有這樣的:

class A{ 
} 

class B{ 
} 

class C extends B { 
    static belongsTo = [a: A] 
} 

我想運行A.list()*.delete()

什麼我需要做的CA級聯刪除?

+0

你能發佈外鍵約束的錯誤? – Tom

+0

無法執行更新查詢:SQL [delete form A where deleted =?] constraint [fk

+0

我的實際刪除是一個'executeUpdate',其中'delete from A where condition',因爲我正在刪除很多記錄,並且不能迭代刪除。 –

回答

1

您是否在class A中添加了映射?

class A{ 

    static hasMany=[c:C] 
    static mappedBy=[c:"cColumn"] 
} 

當我從this理解,既映射應該存在

+0

在最新版本的文檔中(http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.3.3%20Understanding%20Cascading%20Updates% 20和%20Deletes)它顯示與這個映射關係爲'單向一對一',所以我想你可能會在這裏做點什麼。 – proflux

+0

這會失敗,因爲只有C定義了列。如果我將字段移到基類B,我仍然會得到這個錯誤,無論是使用executeUpdate還是* .delete(); –

+0

它看起來像你需要這個AND 'A.withNewSession {} .findByBlah()*。delete() }'這看起來有點瘋狂,但它是唯一可以通過我的外鍵集成測試,並且我不知道爲什麼。 –