1

에 대한 IsDirty 사용()을 (를) 찾기 : 내가 Grails는 3.2을 사용하고 어린이 요소

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

컬렉션이 약간 다르게 처리됩니다. 당신은 최대 절전 모드 또는 컬렉션 (최대 절전 모드 용) org.hibernate.collection.spi.PersistentCollection 경우 확인해야 GORM의 다른 구현 또는 org.grails.datastore.mapping.collection.PersistentCollection 중 하나 (대한 MongoDB를/Neo4j/등) 사용 여부에 따라

PersistentCollection 인터페이스는 isDirty()있다 메서드를 사용하여 연결이 변경되었는지 확인할 수 있습니다. 따라서 다음과 같이됩니다 :

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

할 것입니다.

+0

은 매력으로 작동합니다. 감사! –