Я пытаюсь deep clone
мой объект домена. Он имеет около 10 однозначных сопоставлений, и, кроме того, их больше.
Я попробовал следующий фрагмент:
def deepClone() {
def copy = this.class.newInstance()
PersistentEntity entity = Holders.grailsApplication.mappingContext.getPersistentEntity(this.class.name)
entity?.persistentProperties?.each { prop ->
if (prop.isAssociation()) {
if (prop.isOneToOne()) {
copy."${prop.name}" = this."${prop.name}"?.deepClone()
} else if (prop.isOneToMany()) {
this."${prop.name}".each {
copy."addTo${StringUtils.capitalize(prop.name)}"(it?.deepClone())
}
}
} else if (prop.name != 'id') {
if (this."${prop.name}" instanceof List) {
this."${prop.name}".each {
copy."addTo${StringUtils.capitalize(prop.name)}"(it)
}
} else {
copy."${prop.name}" = this."${prop.name}"
}
}
}
return copy
}
Но prop.isAssociation
не найдено. Кто-нибудь знает, как проверить связь в grails 3.3.11
. Раньше это работало в 1.3.7
версии.