Если у вас есть сервисный метод save (User user), который просто вызывает user.save (), как вы можете остановить его, перезаписав пароль пустым значением (или не проверив, если его значение равно null), если пользователь сказал, что отредактировал свой пароль?адрес?пароль не отправляется в окно обновления.В старые времена у нас было что-то вроде этого:
def update(Map params) {
params.remove("password")
player.properties = params
player.save()
}
Теперь у нас есть это:
interface IUserService {
User get(Serializable id)
List<User> list(Map args)
Long count()
void delete(Serializable id)
User save(User user)
User update(User user)
}
@Service(User)
@Transactional
abstract class UserService implements IUserService {
@Override
User update(User user) {
user.save() // this will overwrite the password, or fail if the password is null.
}
Что является новым эквивалентом params.remove?Как не обновить пароль при обновлении объекта?Я думаю, мы могли бы прочитать текущий пароль из БД и назначить его переданному объекту перед сохранением, но это еще одно чтение.Или мы могли бы написать какой-нибудь пользовательский sql, который обновляет каждое поле, но не те, которые мы хотим замаскировать?