0

我使用 Fluent NHibernate,我需要使用 GeneratedBy.Native() 来生成 Id 以支持 Oracle、DB2 和 MSSQL 数据库。如果我尝试在 Oracle 上像这样运行它并将新记录插入到表中,我会得到:

Could not execute query: select hibernate_sequence.nextval from dual
System.Data.OracleClient.OracleException (0x80131938): ORA-02289: sequence does not exist

映射类:

public sealed class ListDataMap : ClassMap<ListData>
{
    public ListDataMap()
    {
        Table("LIST_DEF");

        Id(x => x.Id, "ID").Not.Nullable().GeneratedBy.Native();
        //other mapping
    }
}

如何指定序列的名称?我不想使用 hibernate_sequence 因为我需要超过 1 个序列并且我不想拥有 1 个共享序列。

谢谢!

4

1 回答 1

5

我在这里找到了答案:http: //thatextramile.be/blog/2007/07/native-id-generation-with-nhibernate/

很简单:

Id(x => x.Id, "ID").Not.Nullable().GeneratedBy.Native(
    builder => builder.AddParam("sequence", "SEQ_LIST_DEF")
);
于 2012-11-22T17:44:41.193 回答