这两种自动值生成策略有什么区别?
1. @GeneratedValue
2. @GeneratedValue(strategy=IDENTITY)
答案 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 - 表示持久性提供程序必须使用基础数据库表为实体分配主键,以确保唯一性。