0

正如我们所知,如果我们identity在 Hibernate 中使用 ID 生成器,并且如果我们不将主键值设置为实体对象,那么数据库将插入主键值。

但是如果我们使用identityID 生成器并且我们仍然将主键值设置为实体类对象,entityClassObject.setPrimaryKeyNo(10)那么哪个主键将存储在数据库中?

  1. 数据库提供的主键
  2. 我们提供的主键

有人可以证明吗?

4

1 回答 1

0

数据库提供主键。更准确地说,主键由持久性提供程序提供。

从 javadoc 的GenerationType.IDENTITY

身份

public static final GenerationType IDENTITY

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

来自Hibernate-5.3.1.Final用户指南

2.6.9。使用 IDENTITY 列

为了实现基于IDENTITY 列的标识符值生成,Hibernate 使用其org.hibernate.id.IdentityGenerator id 生成器,该生成器期望标识符由 INSERT 生成到 table 中

于 2018-06-09T13:49:38.573 回答