在oracle db上,hibernate对generator class ="native"做了什么?

Ula*_*kar 3 oracle hibernate

我在我的代码中有这个映射:

News.hbm.xml:
<class name="xyz.News" table="XYZ_NEWS">
        <id name="id" column="NEWS_ID">
            <generator class="native"/>
        </id>
rest of mapping
</class>

我正在使用Oracle数据库.Hibernate文档告诉我:

native - 根据底层数据库的功能选择identity,sequence或hilo

这对Oracle意味着什么?

编辑: 我现在知道它使用序列.序列的名称是我感兴趣的.

Ste*_*ger 7

它需要序列.您需要提供序列名称.
编辑:如果未提供名称,将使用名为HIBERNATE_SEQUENCE的序列.

看代码,它让方言决定.方言实施这样的决定:

// Dialect.cs Line 231
public virtual System.Type NativeIdentifierGeneratorClass
{
    get
    {
        if (SupportsIdentityColumns)
        {
            return typeof(IdentityGenerator);
        }
        else if (SupportsSequences)
        {
            return typeof(SequenceGenerator);
        }
        else
        {
            return typeof(TableHiLoGenerator);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它不会被Oracle覆盖.Oracle不支持身份,但支持序列.