2017-04-26 4 views
0

同じModelクラスの別のインスタンスを参照する属性を持つModelクラスがあります。基本的に1つのモデルのツリー構造。deleteAllは、同じテーブル内の他の行への外部キーでは機能しません。

私がMyModel.deleteAll()をexectuteしようとすると、外部キー制約が失敗するため失敗します。

deleteAllクエリに対してこの制約を容易に中断することはありますか?

私が見つけた唯一の回避策は、mysqlを使用しているため、TRUNCATE文を発行することです。これは、mysqlが直ちに受け入れるものです。事前に

おかげで、 エヴァン

例外の詳細:

org.javalite.activejdbc.DBException:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:削除したり、親行を更新できません。外部キー制約が失敗し、クエリ(。visibledb_testingaccountabilitiesは、CONSTRAINT accountabilities_prototype_id FOREIGN KEY(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を試すことができます。注意してください - これは強力ですが危険な方法です。すべてのドキュメントを読んだ後に使用してください。

関連する問題