Hibernate中的本地生成器类

12

我有Hibernate映射XML文件的这一部分,我正在寻找一个很好的例子来说明"native"是什么意思。

<hibernate-mapping>
 <class name="com.hib.Task" table="tasks">
  <id name="id" type="int" column="id" >
   <generator class="native"/>
  </id>

我知道这与唯一标识属性有关,但我真的希望有一个例子。

对于这个新手问题,抱歉,我对Hibernate和编程一般都很新 :) 谢谢!

2个回答

12

本地的意思是,您的生成器将根据当前数据库支持的内容使用标识或序列列。

这里介绍了每种策略的文档

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id

native

根据底层数据库的能力选择标识、序列或hilo。

assigned

在调用save()之前,让应用程序向对象分配一个标识符。如果没有指定元素,则这是默认策略。

例如: 如果您在Mysql中将主键列设置为auto_increment,则将使用此策略更新数据库


“assigned” 是生成主键的默认策略。对于参考键,请参考 https://www.java4s.com/hibernate/generators-in-hibernate/。 - Ashish Burnwal
读取第三行,这可能决定谁是疯子。 - Ashish Burnwal
@AshishBurnwal 我同意你的看法,抱歉之前链接了一些随机的在线资源。现在已经更改为指向官方文档。再次感谢。 - Suresh Atta

3
并且为了补充Suresh Atta所说的内容,您可以命名这个序列:
<hibernate-mapping>
 <class name="com.hib.Task" table="tasks">
  <id name="id" type="int" column="id" >
   <generator class="native">
     <param name="sequence">s_tasks</param>
   </generator>
  </id>

因此,它可以适用于自增主键和序列递增的主键。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接