почему коллекция [Person.companies] не была обработана flush () при использовании сессии? - PullRequest
1 голос
/ 20 июля 2009

Я использую Grails 1.1.1, и я получил эту ошибку коллекция [Person.companies] не была обработана flush ()

конфигурация следующая: Домен персоны имеет много компаний (домен компании) в то время как компания принадлежит лицу

тогда в контроллере я так сделал

def person = session.person ; 
def jobs =  Job.findByPerson(person);
jobs.currentSalary = new BigDecimal(params.currentSalary);
... another code ... 

jobs.save(flush:true);

выдает следующую ошибку: коллекция [Person.companies] не была обработана flush ()

Я пытался изменить первую строку с

def person = session.person;
to
def person = Person.get(session.person.id);

Я прочитал в списке рассылки, кто-то сказал, что это связано с поиском плагина, но я им не пользуюсь.

и это работает ...

мой вопрос, почему я не могу использовать session.person, который содержит тот же объект.

спасибо вам

Ответы [ 2 ]

1 голос
/ 25 июля 2009

Попробуйте заменить:

def person = session.person;

с:

def person = session.person.attach(); 
0 голосов
/ 23 июля 2009

Я столкнулся с подобной проблемой, когда person.company была определена как список, а не как набор или SortedSet. В моем случае мне пришлось изменить функцию CompareTo Company, чтобы SortedSet работал правильно. Казалось странным взаимодействием между этими JIRA 2986 и 4453, что я не успел разобраться. Основная проблема заключается в некоторой отложенной загрузке коллекций.

http://jira.codehaus.org/browse/GRAILS-4453 (можно разместить только одну гиперссылку)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...