0

ドキュメントの例を使用すると、結合テーブルを介して接続されている医師と患者がいます。ここで、医師から患者を削除します。これは正常に機能します。つまり、結合テーブルの行が消えます。

doctor.remove(patient);

データベースから Doctor をリロードせずに残りの (n-1) 人の患者を取得する方法はありますか?

doctor.getAll(Patient.class);

ドクターをリロードせずにこれを行うと、削除されたばかりのエントリが表示されます。また、キャッシュのパージは機能しません。データベースから医者もリロードしたときにのみ、削除されたエントリはなくなりました。これが機能する唯一の方法ですか?

4

1 に答える 1

0

これがまさにフレームワークの仕組みです。このコード:

doctor.remove(patient);

結合テーブルからレコードを削除します。その後、以下を呼び出します。

doctor.getAll(Patient.class);

削除された患者を返すことはありません。https://github.com/javalite/activejdbc/blob/master/activejdbc/src/test/java/org/javalite/activejdbc/Many2ManyRelationshipTest.javaに追加のテスト メソッドを記述して、これをテストしました。

追加したテストは次のとおりです: https://gist.github.com/ipolevoy/821e986c5c7deb28a90d ご覧の とおり、9 行目では患者が 1 人しか取得されません。

ロギングをオンにできます: http://javalite.io/loggingで、フレームワークが実行しているステートメントを確認できます。

于 2015-05-31T15:42:19.000 に答える