HiLo NHibernate id生成器实现

时间:2011-11-08 15:51:19

标签: nhibernate hilo

我想使用“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>

数据库表“Cat” CatId bigint NOT NULL 名称varchar(16)NOT NULL 性别char(1)NULL 重量真实为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 cat对象时会产生99.12%的碎片。 有人能指出我的“hilo”实施的例子或给我一个我缺少的小费吗?

感谢。

2 个答案:

答案 0 :(得分:1)

solution解决了我的问题。这很简单,不知道为什么在nhibernate网站上没有像这样的小例子。

答案 1 :(得分:0)

您可能遇到NH-2687