По умолчанию при создании объекта домена в grails он добавляет столбец «id» и устанавливает его для автоматического увеличения в БД.grails/hibernate: как отключить автоинкремент на столбце ID?
Я хочу указать параметр id при создании/сохранении объекта, а не использовать какой-либо генерации (его для небольшого количества статических фрагментов данных, которые я хочу, чтобы ID был привязан к значениям, которые я даю) ,
Есть другие преимущества, которые я хочу, например. чтобы иметь возможность создать объект в памяти с правильным идентификатором, без необходимости его считывать из БД, сделать этот объект отношением типа «содержит» к другому объекту, если это имеет смысл.
Grails имеет documenation для столбца идентификаторов, но не говорит, как отключить автоматическое приращение и позволить ID должны быть переданы в конструктор объекта домена:
http://grails.org/doc/2.1.0/ref/Database%20Mapping/id.html
К сожалению, это не работает. Если я попробую это и передаю идентификатор конструктору и сохраню его, я получу: IdentifierGenerationException: идентификаторы для этого класса должны быть назначены вручную перед вызовом save() –
@JohnLittle, так почему бы вам не назначить его вручную перед вызовом save? – t31321
Я надеялся передать идентификатор в конструкторе, например. новый статус (id: 1, имя: «active»). save(). Я вижу, что могу это сделать: s = новый статус (имя: «активный»); s.id = 1, s.save(), что является более болезненным, поскольку у меня есть много статических элементов для установки в бутстрапе. Я посмотрел на переопределение конструктора Status и передачу в _id и его назначение, а также все остальные поля вручную, но это также значительные накладные расходы. –