Hibernate自动值生成策略的区别?

时间:2011-12-12 11:54:50

标签: java hibernate java-ee

这两种自动值生成策略有什么区别?

 1. @GeneratedValue
 2. @GeneratedValue(strategy=IDENTITY)

3 个答案:

答案 0 :(得分:8)

这就像是:

  

AUTO 表示持久性提供程序应为特定数据库选择适当的策略。

     

<强> IDENTITY             表示持久性提供程序必须使用数据库标识列为实体分配主键。

     

<强> SEQUENCE             表示持久性提供程序必须使用数据库序列列为实体分配主键。

     

表格             表示持久性提供程序必须使用基础数据库表为实体分配主键,以确保唯一性。

请参阅此处的http://docs.oracle.com/javaee/5/api/javax/persistence/GenerationType.html

API

答案 1 :(得分:3)

如果您未设置策略属性,则默认为AUTO。 来自Hibernate的文档:
AUTO:根据底层数据库的功能选择IDENTITY,SEQUENCE或TABLE。

答案 2 :(得分:1)

不同之处在于@GeneratedValue使用AUTO策略作为默认值,而@GeneratedValue(strategy = IDENTITY)使用IDENTITY策略

以下是策略的不同选项

AUTO - 表示持久性提供程序应为特定数据库选择适当的策略。

IDENTITY - 表示持久性提供程序必须使用数据库标识列为实体分配主键。

SEQUENCE - 表示持久性提供程序必须使用数据库序列列为实体分配主键。

TABLE - 表示持久性提供程序必须使用基础数据库表为实体分配主键,以确保唯一性。