【问题标题】:Specify table to be use for native id generator指定要用于本机 id 生成器的表
【发布时间】:2014-10-16 05:06:13
【问题描述】:

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

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

除了默认表(即“hibernate_unique_key”)之外,还有什么方法可以使用?使用原生生成器时如何配置表名?

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

【问题讨论】:

  • 你的问题真令人困惑。
  • 简单来说,除了native,我们不能使用任何其他的生成器,如果native选择使用TableHiLoGenerator,那么我们必须配置tablename。
  • 哪个数据库有hilo算法作为它的原生序列生成器?

标签: java hibernate


【解决方案1】:

我刚刚用 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>

现在,当我保存我的学生类数据时,操作成功并且在这种情况下休眠不会生成任何表 HI_VALUE。当任何 Database 支持的原生 Id 生成算法为 HiLO 时,它可能会生成此表用作 Id 生成器。

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

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

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 2023-01-30
    • 2015-07-21
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多