Grails не сохраняет при использовании findAll, но делает при использовании collection
У меня есть этот код:
void updateIndex() {
Visit.withNewSession {
def results = patient.visits.sort{ it.date }
results.eachWithIndex { item, index ->
item.index = index
}
}
}
Это сохраняет в БД без сохранения (). Я изменил результаты, чтобы использовать запрос findAll (потому что я хотел только выбрать их), и теперь он не сохраняет изменения в БД. Я вижу изменения в индексах, но эти изменения никогда не сохраняются.
def results = Visit.findAllByPatientAndTypeInList(
this.patient,
[Type.Test, Type.Junk]
).sort{ it.date }
Это один из тех, кто попал в GORM? Я попытался явным образом вызвать сохранение (и проверить на наличие ошибок), но все равно не повезло.
1 ответ
Это две разные пары обуви.
В первом случае вы сортировали список hasMany
объекты, которые связаны с patient
через соединительный стол с list index
поле. Поэтому, когда вы сортируете список, поле индекса объединяемой таблицы загрязняется и будет обновляться после tx-commit.
Во втором случае вы получите список экземпляров, но не list index
Информация. Итак, что бы вы ни делали со списком - переупорядочивание, добавление или удаление его записей - не делает его экземплярами dirty
, Ergo, они не спасены даже на save()