Изменение первичного ключа id на тип String в Grails

В моем приложении Grails 2.0 определен объект домена User:

class User {

static mapping = {
    table "dt_user"
    columns {
      id column:'user_id', generator:'assigned', type:'string'
    }
}

Когда я пытаюсь сохранить нового пользователя в моем BootStrap файле, как это сделано:

def user = new User(id: "smith").save(failOnError:true)

Я получаю следующую ошибку:

| Error 2012-01-13 10:09:42,659 [main] ERROR property.BasicPropertyAccessor  - IllegalArgumentException in class: User, setter method of property: id
| Error 2012-01-13 10:09:42,660 [main] ERROR property.BasicPropertyAccessor  - expected type: java.lang.Long, actual value: java.lang.String

Я также попробовал изменить класс User на этот:

class User {
    static mapping = {
        table "dt_user"
        columns {
            id column:'user_id', generator:'assigned', type:'string', name:'id'
        }
    }

    String id 
}

что привело к исчезновению вышеуказанных ошибок. Однако я обнаружил, что в результате идентификаторы генерируются автоматически, полностью игнорируя пункт generator: 'assigned'.

Что я делаю не так?

12
задан Patrick Marchwiak 13 January 2012 в 19:59
поделиться