指定要用于本机ID生成器的表

时间:2014-10-16 05:06:14

标签: java hibernate

我们正在使用hibernate的本地id生成器,并且其中一个数据库hibernate选择使用TableHiLoGenerator。

<id name="id" column="ID_">
  <generator class="native" />
</id>

有没有办法,我们可以使用默认表以外的其他方式,即“hibernate_unique_key”?如何在使用本机生成器时配置表名?

我们必须使用原生的Oracle,我们必须使用序列,对于MySQL,我们必须使用身份生成器。

1 个答案:

答案 0 :(得分:0)

我刚用MySQL作为数据库测试了这段代码,它运行正常:

<hibernate-mapping>    
  <class name="hibernate.Student" table="STUDENT">
            <id name="studentId" type="java.lang.Integer">
                <column name="STUDENT_ID" />
                <generator class="native">
                    <param name="table">HI_VALUE</param>
                    <param name="column">NEXT_VALUE</param>
                    <param name="max_lo">100</param>
                </generator>
            </id>
        .....
    </class>
</hibernate-mapping>

现在,当我保存我的Student类数据时,操作成功,在这种情况下,hibernate不会生成任何表 HI_VALUE 。当任何数据库支持的本机Id生成算法是HiLO时,它可以生成此表以用作Id生成器。

然而,具体的证据是我不必支持的。

更新:它也适用于Oracle 11g。