0

Fluent NHibernate を使用しており、ID 生成に GeneratedBy.Native() を使用して、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
    }
}

シーケンスの名前を指定するにはどうすればよいですか? 複数のシーケンスが必要になり、1 つの共有シーケンスを持ちたくないので、hibernate_sequence を使用したくありません。

ありがとう!

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 に答える