Как таблица hibernate_unique_key создается в новой базе данных? - PullRequest
2 голосов
/ 29 декабря 2010

Я пытаюсь создать свое первое тестовое приложение с помощью NHibernate, как в следующем примере Руководство для начинающих NHibernate 2.0 .В примере используется генератор POID HiLo в отображениях.Я понимаю, что этот алгоритм требует специальной таблицы базы данных для хранения текущего значения Hi.Но я не понимаю, как создается эта таблица?Нужно ли создавать таблицу вручную (я не нашел сценарий SQL для этой таблицы) или она должна автоматически создаваться сессией?

Мой текущий код генерирует исключение с сообщением: недопустимое имя объекта 'hibernate_unique_key' и таблица не существует в моей базе данных.

Ответы [ 2 ]

8 голосов
/ 29 декабря 2010

Я предлагаю стратегию hilo per table, для этого вам нужно создать таблицу manually, а затем добавить несколько строк данных, например,

CREATE TABLE hibernate_unique_key (
  TableName varchar(25) NOT NULL,
  NextHi bigint NOT NULL
)

затем добавьте в базу данных строку для every таблицы, для которой вы хотите использовать hilo: например,

CmsLogin,10
Address, 10

Ваши отображения будут содержать следующее: -

    <id name="Id" column="Id" unsaved-value="0">
        <generator class="hilo">
            <param name="column">NextHi</param>
            <param name="where">TableName='CmsLogin'</param>
            <param name="max_lo">100</param>
        </generator>
    </id>

и альт!

1 голос
/ 31 декабря 2010

Самый простой способ создания схемы базы данных - использовать инструмент hbm2ddl : это просто вопрос настройки фабрики сеансов:

<property name="hbm2ddl.auto">create</property>

Другой вариант, который я недавно нашел, этоработает экспорт шемы из кода.Вот подробности в другой теме .

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