【发布时间】:2016-06-01 16:04:01
【问题描述】:
我正在使用 Grails 2.5.4,似乎基于域对象中定义的约束的验证不起作用。给定:
class Pet {
String name
static constraints = {
name(nullable: false, blank: false)
}
}
当我使用如下代码进行测试时:
Pet p = new Pet()
if(!p.save()) {
p.errors.each {
println it
}
}
我希望在控制台上看到验证输出。相反,我在 save() 上收到运行时异常:
Class
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
Message
Column 'name' cannot be null
这不是我所期望的行为。当验证未通过时,save() 不应该进行 MySQL 插入调用。有谁知道问题是什么?
我还测试了以下内容:
Pet e = new Pet()
e.validate()
println e.hasErrors()
我得到了错误的输出,这是不正确的。
当我给宠物起名字时,插入效果很好。所以设置似乎没问题。只是验证似乎不起作用。
【问题讨论】:
-
如果您可以提供一个示例应用程序来演示该行为,那么找出问题所在将是微不足道的。
-
默认情况下,属性不为空,空字符串通过数据绑定转换为空,所以约束
name(nullable: false, blank: false)在很大程度上是多余的
标签: hibernate validation grails grails-orm