2010-12-29 15 views
2

NHibernateで最初のテストアプリケーションを作成しようとしています(例:NHibernate 2.0 Beginners Guide)。この例では、HiLo POIDジェネレータをマッピングに使用しています。私は、このアルゴリズムは、現在のHi値を格納するために特別なデータベーステーブルを必要とすることを理解します。しかし、私はどのようにこのテーブルが作成されて理解していない?手動でテーブルを作成する必要がありますか(このテーブルのSQLスクリプトは見つかりませんでした)、またはセッションによって自動的に作成される必要がありますか?hibernate_unique_keyテーブルは新しいデータベースでどのように作成されますか?

私の現在のコードは、メッセージで例外をスローしています:無効なオブジェクト名 'hibernate_unique_key'で、テーブルがデータベースに存在しません。

答えて

8

テーブルごとにhilo戦略をお勧めします。これを行うには、テーブルmanuallyを作成し、データの行を追加する必要があります。

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

次に、ヒロを使用するテーブルeveryテーブルのデータベースにローを追加します。

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

ありがとう、それは本が欠けている部分でした。 –

+0

問題はありません。喜んで助けになります。 – Rippo

+0

私はあなたのアドバイスに従っていますが、同じ結果が得られます。next_hiの値は、各行のすべてのテーブルで同じです。 – Kimi

1

データベーススキーマを生成するための方法を最も単純オプションは、ツールhbm2ddl使用することです:私は最近、コードからシェマのエクスポートを実行している見つけ

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

別のオプション:それはセッションファクトリを設定するだけですが。詳細はthreadです。

+0

データベース全体を生成する必要はありません。私は既に空のデータベースを持っており、私はHiLo POIDジェネレータを使いたいです。 –

関連する問題