0

「hilo」ジェネレーターを使用したいのですが、NH のドキュメントにあるように「特定の」テーブルを作成する方法とそれに渡す値の完全な例はありません。NH チュートリアルから抜粋した次のコード フラグメント

public class Cat
{
    private Int64 id;
    private string name;
    private char sex;
    private float weight;

    public Cat()
    {}

    public virtual Int64 Id
    {
        get { return id; }
        set { id = value; }
    }
    ....
}

マッパー

<hibernate-mapping ...>
<class name="Cat" table="Cat">
  <id name="Id" >
    <column name="CatId" sql-type="Int64" not-null="true"/>
    <generator class="hilo"/>
  </id>
  <property name="Name">
    <column name="Name" length="16" not-null="true" />
  </property>
  ....
</class>
</hibernate-mapping>

DB table "Cat" CatId bigint NOT NULL Name varchar(16) NOT NULL Sex char(1) NULL Weight real NULL は、デフォルトではデータベースに何も作成しません。

「id」ノードのパラメーター

    <param name="table">hi_value</param>
    <param name="column">next_value</param>
    <param name="max_lo">100</param>

「無効なオブジェクト名 'hi_value'」エラー メッセージが表示されますが、それらがないと、「無効なオブジェクト名 'hibernate_unique_key'」が表示されます。

チュートリアルに示されている Cuid.Comb はうまく機能しますが、20K の猫オブジェクトをループに追加すると、99.12% の断片化が発生します。誰かが「hilo」実装の例を教えてくれますか、それとも私が欠けているものを教えてくれますか?

ありがとう。

4

2 に答える 2

1

この解決策は私の問題を解決しました。それはかなり単純です。なぜ nhibernate サイトにそのような小さな例がないのかわかりません。

于 2011-12-12T22:02:37.510 に答える
0

NH-2687 に遭遇している可能性があります。

于 2011-11-08T16:51:25.003 に答える