我需要获取有关特定Grails域类的所有信息,即持久属性以及与它们相关的约束。我怎么做?
答案 0 :(得分:3)
从Grails 3.3开始,接受的答案不再正确。 DefaultGrailsDomainClass
现已弃用,单个参数构造函数将抛出一个异常,即尚未初始化mappingContext。
注入grailsDomainClassMappingContext
bean并使用
PersistentEntity
def persistentEntity = grailsDomainClassMappingContext.getPersistentEntity(MyDomain.class.name)
def propertyList = persistentEntity.getPersistentProperties()
答案 1 :(得分:2)
以下内容为您提供了一个地图,其中属性名称为键,约束地图为值,适用于Grails 3:
import subprocess
subprocess.Popen(["notepad","list_of_numbers.txt"])
subprocess.Popen(["notepad","list_of_words.txt"])
答案 2 :(得分:1)
我在Grails 3.3.9上使用此解决方案:
1)自动连接该属性
MappingContext grailsDomainClassMappingContext
2)检索propertyList
和constrainedProperties
ConstrainedDiscovery constrainedDiscovery = GrailsFactoriesLoader.loadFactory(ConstrainedDiscovery.class);
PersistentEntity crlPe = grailsDomainClassMappingContext.getPersistentEntity(MyDomain.name)
def propertyList = persistentEntity.getPersistentProperties()
Map constrainedProperties = constrainedDiscovery.findConstrainedProperties(crlPe);
此外,documentation指出,您应该可以通过调用以下方法来检索约束:
MyDomain.constrainedProperties
它确实有效,但是在日志中有一个令人讨厌的警告。此解决方案可以很容易地与以下日志消息一起使用:
logger("org.grails.core.DefaultGrailsDomainClass", ERROR)
答案 3 :(得分:0)
Grails 4.x
def persistentEntity = grailsApplication.mappingContext.getPersistentEntity(object.getClass().getName())