2009-12-22 32 views
2

我正在使用schemaExport爲我的自動測試創建一個內存數據庫。我有幾個(5)類將他們的HiLo標識映射到同一個數據庫表,每個類使用一列。SchemaExport vs 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> 

這樣做的正確方法是什麼?

回答

3

我相信在SchemaExport中存在一個錯誤(或者是設計上的錯誤),並且只有在它看到帶有HiLo的第一個實體時纔會查看hibernate_unique_key表。因此,所有HiLo實體都必須使用同一列。

但是,我最近需要一個定製的IdGenerator,它基於NHibernate中HiLo繼承的同一個基類。對於這個數據庫,我需要每個表一列(這是用這種方式用HiLo樣式生成器設置的舊數據庫)。

你可以看到我在這裏做,如果有幫助:

Implementing a custom id Generator for nHibernate

Generate custom DDL for a custom id Generator

Entire post on nhibernate.info

+0

謝謝!現在,我將使用單列解決方案,但我非常感謝這個例子。 – hhravn

+0

是的,我絕對建議保持簡單。我只是因爲傳統要求才做到這一點。 –

+0

事實證明,這是通過設計,仍然對開發人員(包括我自己)造成問題。看看這裏:https://nhibernate.jira.com/browse/NH-2687 –