您好我正在使用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
答案 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方法。
问候。