GORM - получение исключения sql в функции .get()

привет, я использую 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

person Sedat Başar    schedule 30.06.2011    source источник
comment
я отредактировал tim_yates вы можете проверить   -  person Sedat Başar    schedule 30.06.2011


Ответы (1)


Во-первых, мало информации.

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

Почему ты так поступаешь? Этот код находится в классе домена?

Вы можете обновить экземпляр пользователя классическим способом в своем контроллере:

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.

С уважением.

person Vladimir    schedule 01.07.2011