正如我们所知,如果我们
identity
在 Hibernate 中使用 ID 生成器,并且如果我们不将主键值设置为实体对象,那么数据库将插入主键值。但是如果我们使用
identity
ID 生成器并且我们仍然将主键值设置为实体类对象,entityClassObject.setPrimaryKeyNo(10)
那么哪个主键将存储在数据库中?
- 数据库提供的主键
- 我们提供的主键
有人可以证明吗?
正如我们所知,如果我们
identity
在 Hibernate 中使用 ID 生成器,并且如果我们不将主键值设置为实体对象,那么数据库将插入主键值。但是如果我们使用
identity
ID 生成器并且我们仍然将主键值设置为实体类对象,entityClassObject.setPrimaryKeyNo(10)
那么哪个主键将存储在数据库中?
有人可以证明吗?
数据库提供主键。更准确地说,主键由持久性提供程序提供。
从 javadoc 的GenerationType.IDENTITY
:
身份
public static final GenerationType IDENTITY
指示持久性提供程序必须使用数据库标识列为实体分配主键。
2.6.9。使用 IDENTITY 列
为了实现基于
IDENTITY
列的标识符值生成,Hibernate 使用其org.hibernate.id.IdentityGenerator
id 生成器,该生成器期望标识符由 INSERT 生成到 table 中。