カスタム SQL ステートメントを作成せずに、OrmLite の CreateOrUpdate 呼び出しが実際にデータベースの値を変更したかどうかを確認する方法はありますか?
Dao.CreateOrUpdateStatus.getNumLinesChanged()
影響を受けた行の値を返すため、更新されたオブジェクトがまったく変更されなかった場合も結果は 1 になります。
以下のメソッドをクラスに追加し、すべての setXXX メソッドでこれらのメソッドのいずれかを呼び出します。
private boolean objectChanged = false;
private void checkChanged(Object ob1, Object ob2) {
if (ob1 == null && ob2 == null) {
// both null = same, do nothing
return;
} else if (ob1 == null || ob2 == null) {
// only one null
objectChanged = true;
} else if (ob2.equals(ob1)) {
// same, do nothing
return;
} else {
objectChanged = true;
}
}
private void checkChanged(int int1, int int2) {
if (int1 != int2) {
objectChanged = true;
}
}
それはうまくいく解決策ですが、私はそれが好きではありません。余分なデータベース呼び出しを行わずに、より良い解決策がある場合は、お知らせください。