如何获取不可为空的域类的字段名列表?
例如,在以下域中:
class MyDomain {
String field1
String field2
String field3
String field4
static constraints = {
field2 nullable: true
field3 nullable: true
}
}
如何在控制器中找回列表['field1','field4']
?
我在验证CSV中的行,并且某些行信息与域中存储的行不同,因此最好获取字符串列表而不是绑定到命令对象排除。
答案 0 :(得分:1)
您可以使用constrainedProperties
。它给出了特定域类的所有约束。
现在你只想要非nullble约束,然后过滤掉它的结果。
示例:
MyDomain.constrainedProperties.findResults { it.value.nullable ? null : it.key }
输出:
['field1','field4']
对于grails 2.x用户:
MyDomain.getConstraints().findResults { it.value.nullable ? null : it.key
}
答案 1 :(得分:0)
您需要使用PersistentEntity API
Set<String> propertyNames = [] as Set
for (PersistentProperty prop: MyDomain.gormPersistentEntity.persistentProperties) {
if (!prop.mapping.mappedForm.nullable) {
propertyNames.add(prop.name)
}
}
您可能必须根据需要排除版本或时间戳属性等内容。