1

Ich bin mit Grails 3.2:Finden isDirty() für Kinder Elemente

class Training{ 
    boolean clientChanged = false 
    static transients = ['clientChanged'] 

    static hasMany = [clients:User] 
    //... 

    def beforeUpdate(){ 
     clientChanged = this.isDirty('clients') 
    } 

    def afterUpdate(){ 
     if(clientChanged && section.clients) 
      numberOfAbsentClients = section.clients.size() - (clients.size()?:0) 
    } 
} 

isDirty() für hasMany Vereinigungen, die nicht arbeiten. Wie kann ich damit umgehen?

Antwort

1

Sammlungen werden geringfügig anders behandelt. Je nachdem, ob Sie mit Hibernate oder einer der anderen Implementierungen von GORM Sie überprüfen müssen, wenn die Sammlung ein org.hibernate.collection.spi.PersistentCollection (für Ruhezustand) oder ein org.grails.datastore.mapping.collection.PersistentCollection (für MongoDB/Neo4j/etc)

Die PersistentCollection Schnittstelle hat ein isDirty() Methode, die Sie verwenden können, um zu überprüfen, ob die Zuordnung geändert wurde. So etwas wie:

if(clients instanceof PersistentCollection && clients.isDirty()) { 
    ... 
} 

Wird es tun.

+0

wirkt als Charme. Vielen Dank! –

Verwandte Themen