2012-03-22 3 views
0

Мы используем Grails с устаревшей базой данных, и нам нужно контролировать, как ID присваиваются объектам домена.Использование назначенного идентификатора для объекта домена в Grails 2.0

Мы постарались:

id column: "sco_id", generator:'assigned' 

но мы получаем исключение:

обновления Batch вернулось неожиданное количество строк с обновления [0]; фактический ряд кол-во: 0; Ожидаемый результат: 1

мы также попытались создать пользовательский ID генератора:

public class ScoIdGenerator implements IdentifierGenerator { 

    public Serializable generate(SessionImplementor session, Object object) { 

     /*Generate ID here*/ 

     return 8; 
    } 

} 

Но, похоже, генератор игнорируется в этом случае, поэтому мы получаем ошибку

DEFAULT keyword cannot be used as column has no DEFAULT 

Я не уверен, что эти вопросы относятся только к Grails 2.

Любая помощь оценена?

ответ

4

Проблема здесь в том, что мы пытались настроить идентификатор с колонки блок

static mapping = { 
    table "table_name" 

    columns { 
     id generator: 'assigned', column: "id_sco", sqlType: "int" 
    } 
} 

Вместо этого необходимо настроить идентификатор непосредственно внутри статического блока отображения

static mapping = { 
    table "table_name" 

    id generator: 'assigned', column: "id_sco", sqlType: "int" 
    columns { 
     ... 
    } 
} 
+0

Спасибо за регистрацию подробный ответ. Когда-нибудь это может помочь кому-то с той же проблемой, что и ваша! –