2009-07-20 5 views
1

J'utilise Grails 1.1.1 et je suis cette collection erreur [Person.companies] n'a pas été traitée par flush()pourquoi la collection [Person.companies] n'a pas été traitée par flush() lors de l'utilisation de la session?

la configuration est la suivante: domaine Personne a de nombreuses entreprises (domaine Société) tout société belongsTo personne

puis dans le contrôleur je l'ai fait comme ça

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

jobs.save(flush:true); 

il produit l'erreur suivante: collection [Person.companies] n'a pas été traitée par flush()

J'ai essayé de changer la première ligne de

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

je lis sur la liste de diffusion, quelqu'un a dit que ce plug-in liée à des recherches, mais je n'utilise pas celui-là.

et cela fonctionne ...

ma question, pourquoi je ne peux pas utiliser session.person qui contient le même objet.

vous remercie

Répondre

0

je suis tombé sur un problème similaire lorsque person.company a été défini comme une liste plutôt que d'un ensemble ou SortedSet. Dans mon cas, j'ai fini par devoir changer la fonction compareTo de Company pour que SortedSet fonctionne correctement. Il semblait y avoir une interaction étrange entre ces JIRA 2986 et 4453 que je n'avais pas le temps de régler. Le problème racine implique un chargement paresseux des collections.

http://jira.codehaus.org/browse/GRAILS-4453 (ne peut poster un lien hypertexte)

1

Essayer le remplacement:

def person = session.person; 

avec:

def person = session.person.attach(); 
Questions connexes