2017-04-26 40 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。小心 - 这是一种功能强大但危险的方法,只有在阅读所有文档后才能使用。

相关问题