Grails с Oracle-DB: кажется, есть только один глобальный счетчик для идентификаторов - PullRequest
2 голосов
/ 09 января 2011

когда я использую hsqldb с grails, кажется, что каждый класс домена получает свой собственный счетчик для автоинкремента id.Когда я создаю объект типа a, он получает ID = 1.Когда я создаю объект типа b, он получает ID = 1.Когда я снова создаю объект типа a, он получает ID = 2.

Такое поведение я ожидаю.

, когда я использую oracle db, кажется, что существует только один глобальный счетчикдля всех идентификаторов всех классов домена.Когда я создаю объект типа a, он получает ID = 1.Когда я тогда создаю объект типа b, он получает ID = 2.Когда я снова создаю объект типа a, он получает ID = 3.

Как я могу это изменить?

Ответы [ 2 ]

4 голосов
/ 09 января 2011

Grails использует hibernate и по умолчанию hibernate использует только одну последовательность для генерации всех идентификаторов.Если вам нужна одна последовательность на таблицу, вы можете отредактировать Config.groovy.Добавить следующую строку:

grails.gorm.default.mapping = {id generator:'identity'}
2 голосов
/ 09 января 2011

Если вы хотите лучше контролировать процесс создания / обновления базы данных, то лучше использовать миграцию базы данных, чем позволить Hibernate управлять ею. Мы используем Liquibase , который очень прост в использовании и гибок, и для него уже есть штекер Grails . Кроме того, если я не ошибаюсь, миграции базы данных будут интегрированы в ядро ​​Grails для версии 1.4, так что вы сможете использовать миграции схем без установки какого-либо плагина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...