2012-04-10 9 views
0

So im Wesentlichen habe ich zwei Klassen:grails .removeFrom, wenn das Objekt an anderer Stelle in der Klasse existiert

Class User { 
    String Name 
} 
Class Project { 
    User requestedBy 
    static hasMany = 
    [ 
     assignedTo: User 
    ] 
} 

Jetzt kann ich die requestedBy gesetzt zu sagen, Benutzer 1. ich auch Project.addToAssignedTo tun kann (User 1).

Das Problem kommt, wenn ich den Benutzer von zugewiesen entfernen möchte, wenn sie bereits als requestedBy vorhanden sind. Ich kann anderen Benutzern entfernen, ohne Problem:

Project.removeFromAssignedTo (Benutzer 1) .save (FailOnError: true, bündig: true)

ich keine Fehler irgendwelcher Art erhalten, wird die Daten einfach nicht entfernt bekommen . Jede Hilfe wäre willkommen!

Danke!

Antwort

0

Wenn mehrere Beziehungen zu der gleichen Klasse zu definieren, sollten Sie die bidirektionale Beziehung definieren, und use the mappedBy property beiden Seiten diese Beziehung zu definieren:

class User { 
    String Name 

    hasMany = [requestedProjects: Project, assignedProjects: Project] 

} 
class Project { 
    User requestedBy 
    static hasMany = 
    [ 
     assignedTo: User 
    ] 

    static mappedBy = [requestedBy: 'requestedProjects', assignedTo: 'assignedProjects'] 

} 

Hoffentlich, dass Ihr Problem löst.

+0

Es beschwerte sich über einen Besitzer nicht definiert definiert. Ich definierte den Besitzer und es gab immer noch den gleichen Fehler. Wirklich, obwohl es keinen Eigentümer geben sollte. Ein Projekt gehört nicht einer einzelnen Person, und sicherlich gehört ein Benutzer keinem Projekt. Irgendwelche Ideen? –

+0

'gehört zu 'bedeutet nicht eins zu viele oder eins zu eins. Es hat mehr mit der Definition der "verantwortlichen" Domain-Klasse zu tun. Die 'goesTo'-Klasse ist diejenige, die für das Speichern von Beziehungen in einem Viele-zu-Viele-System verantwortlich ist. Siehe [die Dokumente für mehr] (http://grails.org/doc/2.0.x/ref/Domain%20Classes/belongsTo.html). Versuchen Sie, 'anObjectsTo' zur' Project'-Klasse hinzuzufügen und sehen Sie, ob das hilft. 'static gehört zu = [requestedBy: User, assignedTo: User]' – OverZealous