首页 > 解决方案 > Grails 升级到 3.3.x:无法使用 grails 3.3.5 访问 persistentEntity.relationshipMap 和 persistentEntity.hasOneMap

问题描述

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

GrailsDomainClass 已被 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

它给了我 groovy.lang.MissingPropertyException: No such property: relationshipMap for class: DefaultGrailsDomainClass1_groovyProxy

和,

groovy.lang.MissingPropertyException:没有这样的属性:hasOneMap 类:DefaultGrailsDomainClass1_groovyProxy

有人可以帮助我使用正确的 api 来获取 relationshipMap 和 hasOneMap。我尝试对此进行了很多搜索,但直到现在都没有成功。

提前致谢!

标签: hibernategrailsgrails-ormgrails-domain-classgrails-3.3

解决方案


我得到了解决方案。

没有直接的api,但可以使用:

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

推荐阅读