0

カスタム SQL ステートメントを作成せずに、OrmLite の CreateOrUpdate 呼び出しが実際にデータベースの値を変更したかどうかを確認する方法はありますか?

Dao.CreateOrUpdateStatus.getNumLinesChanged()影響を受けた行の値を返すため、更新されたオブジェクトがまったく変更されなかった場合も結果は 1 になります。

4

2 に答える 2

0

以下のメソッドをクラスに追加し、すべての 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;
    }
}

それはうまくいく解決策ですが、私はそれが好きではありません。余分なデータベース呼び出しを行わずに、より良い解決策がある場合は、お知らせください。

于 2013-10-07T12:09:12.247 に答える