2016-12-14 252 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

作为魅力。谢谢! –