Grails 升级到 3.3.x:无法使用 grails 3.3.5 访问 persistentEntity.relationshipMap 和 persistentEntity.hasOneMap

Grails Upgrade to 3.3.x : Cannot access persistentEntity.relationshipMap and persistentEntity.hasOneMap with grails 3.3.5

根据 grails 3 的升级文档3.x (http://docs.grails.org/3.3.x/guide/upgrading.html)

GrailsDomainClass 已弃用 class PersistentEntity.java。

现在,我正在尝试将 3.2.11 上的 grails 应用程序升级到 3.3.5

在这里,我删除了所有出现的带有 PersistentEntity 的 GrailsDomainClass。 现在,当我尝试打电话时:

示例:

PersistentEntity persistentEntity = grailsApplication.getArtefacts("Domain")[0] as PersistentEntity;

println persistentEntity.relationshipMap
println persistentEntity.hasOneMap

It gives me groovy.lang.MissingPropertyException: No such property: relationshipMap for class: DefaultGrailsDomainClass1_groovyProxy

And,

groovy.lang.MissingPropertyException: No such property: hasOneMap for class: DefaultGrailsDomainClass1_groovyProxy

谁能帮我正确 api 获取 relationshipMap 和 hasOneMap。 我试图搜索很多关于这个但直到现在都没有成功。

提前致谢!

我找到了解决方案。

这里没有直接的 api,但是可以通过以下方式访问:

Map hasOneMap = GrailsClassUtils.getStaticPropertyValue(persistentEntity.clazz, "hasOne") as Map
Map relationshipMap = GrailsClassUtils.getStaticPropertyValue(persistentEntity.clazz, "hasMany") as Map