升级后Grails验证无效

时间:2012-05-18 12:31:16

标签: validation grails constraints gorm

我正在将Grails 1.3.7应用升级到2.0.3,我已修复了大多数问题。但是,我有一些用于创建用户并将其保存到数据库的代码。代码不应该通过验证,因为我正在重用已经使用的用户名并且对用户名有唯一约束。 .validate()返回true,但是当使用MySql唯一约束错误调用user.save()时,代码实际上会发生炸弹。

应该抛出错误:

def submitSignup = {
        def user = new User(params)

        user.validate()
        if (!user.hasErrors()) {
            ...
            // This line bombs with the MySql unique constraint I would have expected .validate() to get
            user.save()
        }
}

在User.groovy中:

static constraints = {
    username(blank: false, unique: true);
    ...
}

有什么想法吗?

编辑:我也在升级到Acegi的Spring Security插件。我不认为这是相关的,但我想我会提到它。

我提出了一个在以下问题中遇到问题的示例:https://github.com/skazzaks/Grails-Unique-Test这使它看起来像一个错误。

2 个答案:

答案 0 :(得分:3)

我在几天前从1.3.7升级到2.0.3时遇到了类似的奇怪验证问题。

对我来说,诀窍是手动清除我的目标目录。显然,重新编译所有类使应用程序重回正轨。

不知道它是否适用于您的情况,但可能值得一试。

答案 1 :(得分:0)

我认为这是一个错误,因为我的Domain类位于src/groovy