SchemaExport против алгоритма HiLo - PullRequest
2 голосов
/ 22 декабря 2009

Я использую schemaExport для создания базы данных в памяти для моих автоматических тестов. У меня есть несколько (5) классов, отображающих их идентификатор HiLo в одну и ту же таблицу базы данных, используя один столбец на класс.

Это дает мне таблицу, hibernate_unique_key, w. 5 колонок. Однако при создании базы данных с использованием scemaexport таблица получает только один столбец (IPoolActivation), в результате чего мои запросы не выполняются, поскольку отображения в модели теперь недопустимы. Я попытался вручную запросить базу данных в памяти, чтобы создать таблицу, но я бы предпочел знать, как заставить schemaexport сделать это правильно.

Фрагмент одного из моих файлов сопоставления;

<id name="Id" column="Id" type="Int32">
  <generator class="hilo">
    <param name="column">IENPool</param>
  </generator>
</id>

Как правильно это сделать?

1 Ответ

3 голосов
/ 25 декабря 2009

Я полагаю, что в SchemaExport есть ошибка (или она есть), и она только один раз смотрит на таблицу hibernate_unique_key, когда видит первую сущность с HiLo. В результате все объекты HiLo должны использовать один и тот же столбец.

Однако недавно мне понадобился собственный IdGenerator, основанный на том же базовом классе в NHibernate, который наследует HiLo. Для этой базы данных мне понадобился один столбец на таблицу (это было для устаревшей базы данных, настроенной таким образом с помощью генератора стилей HiLo).

Вы можете увидеть, что я сделал здесь, если это поможет:

Реализация собственного генератора идентификаторов для nHibernate

Создание пользовательского DDL для генератора пользовательских идентификаторов

Весь пост на nhibernate.info

...