grails - GORM-在.get()函数中获取SQL异常

标签 grails groovy gorm

嗨,我正在使用GORM,我在数据库中有一个用户表。我也有一种更新方法来更新用户个人资料。当我尝试通过第一次尝试更新联系人时可以,但是在第二次或有时第三次尝试后,iam

ERROR org.hibernate.transaction.JDBCTransaction - Could not toggle autocommit
java.sql.SQLException: Error during query: Unexpected Exception: java.lang.ArrayIndexOutOfBoundsException message given: 3

当我尝试这样做时的异常(exception):
User updateUser(User tempUser){
    def id=tempUser.id
    User user = User.get(id)//this line throws exception

最佳答案

首先,没有足够的信息。

User updateUser (User tempUser) {
    def id=tempUser.id
    User user = User.get(id)//this line throws exception

你为什么要这样?这段代码在Domain类中吗?

您可以在 Controller 中更新用户实例的经典方式:
def userInstance = User.get(params.id)
if(userInstance) {
    userInstance.properties = params
    if (!userInstance.hasErrors() && userInstance.save(flush: true)) {
        flash.message = "User was updated successfully"
        // redirect somewhere
    }
}

您也可以尝试将方法添加到用户实例(在User域类中),如下所示:
Class User {
    [...]

    def updateUserInstance(params) {
        it.properties = params
        if (!it.hasErrors() && it.save(flush: true)) {
            return true // or return it
        } else {
            return false
        }
    }
}

然后在您的 Controller 中调用它:
def userInstance = User.get(params.id)
if(userInstance.updateUserInstance(params)) {
    // do something
}

我没有在上面测试代码段,所以要小心。关于您的代码,如果您提供了更多代码,那就太好了:User类的一部分,updateUser方法的更多部分。

问候。

关于grails - GORM-在.get()函数中获取SQL异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530805/

相关文章:

groovy - 使用 Groovy Console,是否可以在类路径中重新加载更改的文件?

在 grails 中作为 map 值列出

gradle - Gradle Groovy Cucumber插件以检查是否已执行所有步骤

grails - Gorm MongoDB 1.0-M2-保存/获取时选择集合

mongodb - grails mongo排序查询,键为变量

使用 run-app 运行时未找到 Grails 插件资源

grails - 我可以使用UIPerformance grails插件并将静态资源托管在另一个域中吗?

spring - Grails应用无法在Tomcat上加载

Grails 数据绑定(bind)和允许的 HTTP 方法

grails - 如何在不包含空格的情况下存储文本字段