2016-12-14 179 views
1

我使用的Grails 3.2:查找isDirty()兒童元素

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()不工作的hasMany關聯。我該如何處理?

回答

1

收集的處理方式稍有不同。根據您是否正在使用Hibernate或者您需要檢查,如果集合是一個org.hibernate.collection.spi.PersistentCollection(對Hibernate)格姆的其他實現或org.grails.datastore.mapping.collection.PersistentCollection之一(MongoDB的/ Neo4j的/等)

PersistentCollection接口有一個isDirty()方法,您可以使用它來檢查關聯是否已更改。所以像這樣:

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

會這樣做。

+0

作爲魅力。謝謝! –