Обновление Grails до 3.3.x: невозможно получить доступ к persistentEntity.relationshipMap и persistentEntity.hasOneMap с помощью grails 3.3.5

Согласно документации по обновлению grails 3.3.x (http://docs.grails.org/3.3.x/guide/upgrading.html)

GrailsDomainClass устарел вместе с классом PersistentEntity.java.

Теперь я пытался обновить свое приложение grails, которое было с 3.2.11, до 3.3.5.

Здесь я удалил все вхождения GrailsDomainClass с помощью PersistentEntity. Теперь, когда я пытаюсь позвонить:

Пример:

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

println persistentEntity.relationshipMap
println persistentEntity.hasOneMap

Это дает мне groovy.lang.MissingPropertyException: нет такого свойства: RelationshipMap для класса: DefaultGrailsDomainClass1_groovyProxy

А также,

groovy.lang.MissingPropertyException: нет такого свойства: hasOneMap для класса: DefaultGrailsDomainClass1_groovyProxy

Может ли кто-нибудь помочь мне с правильным api, чтобы получить RelationshipMap и hasOneMap. Я много пытался поискать по этому поводу, но до сих пор безуспешно.

Заранее спасибо!


person Charu Jain    schedule 28.06.2018    source источник


Ответы (1)


У меня есть решение для этого.

Для этого нет прямого API, но к нему можно получить доступ, используя:

Map hasOneMap = GrailsClassUtils.getStaticPropertyValue(persistentEntity.clazz, "hasOne") as Map
Map relationshipMap = GrailsClassUtils.getStaticPropertyValue(persistentEntity.clazz, "hasMany") as Map
person Charu Jain    schedule 03.07.2018