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

时间:2011-06-30 06:30:47

标签: grails groovy gorm

您好我正在使用GORM,我在数据库中有一个用户表。我还有一个更新用户配置文件的更新方法。当我试图更新一个联系人它的确定第一次尝试,但在第二次或有时第三次尝试,我得到

ERROR org.hibernate.transaction.JDBCTransaction - Could not toggle autocommit
java.sql.SQLException: Error during query: Unexpected Exception: java.lang.ArrayIndexOutOfBoundsException message given: 3
当我尝试这样做时,

异常:

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

1 个答案:

答案 0 :(得分:1)

首先,没有足够的信息。

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

你为什么这样做?这个代码是在Domain类中吗?

您可以在控制器中更新用户实例经典方式:

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
    }
}

此外,您可以尝试将方法添加到用户实例(在用户域类中),像这样:

Class User {
    [...]

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

然后在你的控制器中调用它:

def userInstance = User.get(params.id)
if(userInstance.updateUserInstance(params)) {
    // do something
}

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

问候。