0

私はこのコードを持っています:

void updateIndex() {
    Visit.withNewSession {
        def results = patient.visits.sort{ it.date }

        results.eachWithIndex { item, index ->
            item.index = index
        }
    }
}

これにより、save() なしで DB に保存されます。結果を findAll クエリを使用するように変更しました (選択したいだけだったので) が、変更が DB に保存されなくなりました。インデックスの変更は確認できますが、これらの変更は永続化されません。

def results = Visit.findAllByPatientAndTypeInList(
                this.patient,
                [Type.Test, Type.Junk]
            ).sort{ it.date }

これは GORM の落とし穴の 1 つですか? 私は明示的に保存を呼び出して(そしてエラーをチェックして)試みましたが、まだ運がありません。

4

1 に答える 1

3

それらは 2 組の異なる靴です。

最初のケースでは、フィールドを持つ結合テーブルを介してhasManyリンクされているオブジェクトのリストをソートしていました。したがって、リストをソートすると、結合テーブルのインデックス フィールドがダーティになり、tx-commit 時に更新されます。patientlist index

2 番目のケースでは、インスタンスのリストを取得しますが、list index情報は取得しません。そのため、リストに対して何をしても、並べ替え、エントリの追加または削除を行っても、インスタンスは作成されませんdirty。したがって、それらはいつでも保存されませんsave()

于 2015-09-18T22:00:58.483 に答える