如何在单个Collection中获取grails Domain Class的所有持久属性及其约束?

时间:2017-03-25 07:06:07

标签: java grails gorm

我需要获取有关特定Grails域类的所有信息,即持久属性以及与它们相关的约束。我怎么做?

4 个答案:

答案 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)检索propertyListconstrainedProperties

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())