2013-09-11 4 views
1

У меня есть следующий домен отображенный в MySQL-базе данных:StaleStateException: Hibernate пытается обновить вместо вставки?

class User { 
    String username 
    String passwordHash 

static mapping={ 
    table 'team' 
    version false 
    passwordHash column: 'Password' 
    id column: 'username', name: 'username' 
    } 
} 

При попытке выполнить сохранение() экземпляра, спящий режим всегда выполняет этот запрос:

гибернации: обновление команда set Password =? где username =?

призвание Save():

def save(){ 
    def userInstance = new User() 
    userInstance.username = "test" 
    userInstance.passwordHash = "abcd" 
    if(!userInstance.save(flush:true)){ 
     // 
    } 
} 

Я уже пытался изменить флеш: истинный вставить: истинный. Нет эффекта.

+0

Вы уверены, что имя пользователя 'test' еще не существует? – dmahapatro

+0

@ dmahapatro стол полностью пуст. – malte

ответ

2

Это то, что я пропустил, чтобы сообщить вам в последнем вопросе. Вы должны использовать генератор как assigned, если вы используете свой собственный идентификатор и назначаете свой собственный id. Итак:

id column: 'username', name: 'username', generator: 'assigned' 

Кроме того, я хотел бы предложить, чтобы использовать имя домена в качестве Team для таблицы team вместо User, я не уверен, что будет хорошо играть иначе.

+0

Думаю, что это как целое понятие, я должен сказать (без царапин на поверхности), это абсолютно логично. – malte

Смежные вопросы