2017-04-26 37 views
0

我有一個Model類,它具有引用同一Model類的另一個實例的屬性。它基本上是一個模型中的樹結構。deleteAll不適用於外鍵到同一表中的其他行

當我嘗試執行MyModel.deleteAll()時,它會失敗,因爲外鍵約束失敗。

有沒有辦法輕鬆掛起deleteAll查詢的這個約束?

自從我使用mysql以來,唯一的解決方法是發佈TRUNCATE語句,該語句直接接受mysql。

由於提前, 埃文

異常詳細信息:

org.javalite.activejdbc.DBException:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:不能刪除或更新父行:一外鍵約束失敗(visibledb_testingaccountabilities,約束accountabilities_prototype_id外鍵(prototype_id)參考文獻accountabilitiesid)),查詢:DELETE FROM問責

回答

0

Model#deleteAll()只是生成SQL DELETE FROM YOURTABLE。 如果你可以在MySQL控制檯上運行它,它將從模型中運行。如果您遇到違反約束,也許你想:

Base.exec("TRUNCATE " + MyModel.getTableName()); 

或者,你可以嘗試http://javalite.io/delete_cascade#method-deletecascade。小心 - 這是一種功能強大但危險的方法,只有在閱讀所有文檔後才能使用。

相關問題