我在访问Grails域中定义的唯一约束时遇到问题。 Here's an example from the official Grails documentation(稍加编辑以具有唯一约束):
class User {
String firstName
String middleName
static constraints = {
firstName blank: false, nullable: false
middleName unique: true, nullable: true
}
}
关于Grails 3.1.9:
此代码有效:User.constrainedProperties.firstName.blank
此代码不起作用:User.constrainedProperties.middleName.unique
我收到此错误:
groovy.lang.MissingPropertyException: No such property: unique for class: grails.validation.ConstrainedProperty
有没有办法弄清楚是否设置了这个约束,类似于检查"空白"约束是否设定?感谢
更新:这是我在尝试使用评论中建议的代码时得到的结果(空白与可空的差异)。 hasAppliedConstraint工作正常,但getAppliedConstrait没有。我想我在某个地方犯了一个愚蠢的错误?
Condition not satisfied:
User.constrainedProperties.middleName.getAppliedConstraint('unique')
| |
| null
[ConstrainedProperty@20344ed7User'middleName'middleNamemap['nullable' -> [NullableConstraint@4a2415c5true], 'unique' -> [UniqueConstraint@7115e8atrue]]]
答案 0 :(得分:0)
这是最终对我有用的东西。不知道为什么。
User.constrainedProperties.middleName.getAppliedConstraints().find {it.name == 'unique'}.properties.parameter
答案 1 :(得分:0)
您的代码有效,因为User.constrainedProperties
返回Map
,密钥为domainPropertyName
,值为ConstrainedProperty
。在您的情况下,您将获得ConstrainedProperty
属性middleName
,其中包含方法getAppliedConstraints()
,该方法会返回应用于middleName
的所有约束。
你可以做得更好:
User.constrainedProperties.middleName.getAppliedConstraint('unique').parameter