2015-04-28 5 views
0

Я пытаюсь заставить генератор работать как для столбца id, так и для использования другой последовательности для другого столбца без id.Генератор для столбца non-id

Это, кажется, ничего не делает. Столбец остается нулевым после выполнения сохранения (в тестах интеграции).

static mapping = { 
     id generator: 'sequence', params: [sequence: 'id_seq'] 
     otherCol generator: 'sequence', params: [sequence: 'other_seq'] 
     version true 
    } 
+0

Не самое приятное, но что останавливает вас, заполняя значение beforeInsert? – christopher

ответ

0

Насколько мне известно, опция генератора работает только для столбцов id. Он основан на Hibernate @GeneratedValue, который всегда используется в сочетании с аннотацией @Id.

См:

http://grails.github.io/grails-doc/3.0.x/guide/single.html#identity

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#mapping-declaration-id-generator

Hibernate JPA Sequence (non-Id)

0

Одним из возможных решений было бы использовать для sequence-generator plugin Граалей. Как я понимаю, он эмулирует поведение последовательности базы данных из-за ограничения генераторов grails/hibernate.

У меня была довольно похожая проблема, и этот плагин решил ее. Он имеет некоторые дополнительные функции, такие как вы можете определить префикс для последовательности.

+0

Спасибо, я наткнулся на это, оглядываясь по поводу решения моего первоначального вопроса. Поддерживает ли он использование последовательностей базы данных? –

+0

Из [docs] (https://github.com/goeh/grails-sequence-generator#annotation-sequenceentity) в нем говорится, что плагин не использует последовательности баз данных из-за отсутствия гибкости, которую плагин хочет достичь. Тем не менее вы можете, по крайней мере, установить уникальные настройки. –