2011-06-30 3 views
0

こんにちは、私はGORMを使用しています。私はデータベースにユーザテーブルを持っています。私はユーザープロファイルを更新する更新メソッドを持っています。すべてのGORM - .get()関数でSQL例外を取得する

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

私はtim_yatesを編集できます –

答えて

1

まず:私はこれを行うにしようとしています

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

例外を取得IAM時には三しようとその最初の試みで、[OK]が、2番目の後、または連絡先を、更新しようとしているとき十分な情報がありません。

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 
} 

私は上記のコードスニペットをテストしていないので、CAことrefull。あなたのコードについては、いくつかのコードを追加するといいでしょう:Userクラスの部分、さらにupdateUserメソッドの部分。

よろしくお願いいたします。

関連する問題