gpt4 book ai didi

grails - 为子元素查找 isDirty()

转载 作者:行者123 更新时间:2023-12-02 14:00:49 24 4
gpt4 key购买 nike

我正在使用 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 关联。我该如何处理?

最佳答案

集合的处理方式略有不同。根据您使用的是 Hibernate 还是 GORM 的其他实现之一,您需要检查该集合是否为 org.hibernate.collection.spi.PersistentCollection。 (用于休眠)或 org.grails.datastore.mapping.collection.PersistentCollection (对于 MongoDB/Neo4j/等)
PersistentCollection接口(interface)有 isDirty()可用于检查关联是否已更改的方法。所以像:

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

会做的。

关于grails - 为子元素查找 isDirty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com