Я не совсем уверен, почему вы сталкиваетесь с проблемами, но есть метод merge для доменных объектов. Это позволяет вам повторно присоединить текущий объект к текущему постоянному контексту.
Я недостаточно знаю, какой у вас Foo или какие настройки вы сделали для объекта User, или версию grails / java, которую вы используете, чтобы иметь возможность воспроизвести это.
Я думаю, что это как-то связано с обновлением, которое вы выполняете для объекта пользователя, в результате чего версия базы данных обновляется (и, следовательно, не синхронизируется), но я не могу быть в этом уверен.
Кроме того, я считаю, что поведение validate затем discard меняется и менее необходимо в grails 1.1, основываясь на комментариях к этой записи