如何在单个集合中获取 grails 域类的所有持久属性及其约束?

Sha*_*ank 5 java grails grails-orm

我需要在单个集合中获取有关特定 Grails 域类的所有信息,即持久属性和与它们相关的约束。我怎么做?

Tre*_*bla 6

从 grails 3.3 开始,接受的答案不再正确。 DefaultGrailsDomainClass现在已弃用,单参数构造函数将抛出一个异常,表示 mappingContext 尚未初始化。

注入grailsDomainClassMappingContextbean 并获得PersistentEntitywith

def persistentEntity = grailsDomainClassMappingContext.getPersistentEntity(MyDomain.class.name)
def propertyList = persistentEntity.getPersistentProperties()
Run Code Online (Sandbox Code Playgroud)

  • 事实上,看起来这在 GORM 6.1(或更早版本)中已被弃用...可能比注入特定上下文更干净的方法是从 `grailsApplication.mappingContext` 中获取它...将其进一步抽象一个级别 (2认同)

Mik*_*e W 2

以下内容为您提供一个映射,其中属性名称作为键,约束映射作为值,适用于 Grails 3:

def d = new DefaultGrailsDomainClass(MyDomain.class)

def pp = d.persistentProperties.collectEntries {
    [it.name, d.constrainedProperties[it.name]?.appliedConstraints ]
}
Run Code Online (Sandbox Code Playgroud)