hibernate如何填充自动生成字段的ID?

vin*_*hkr 6 sql database orm hibernate

假设我有一个带有自动生成主键的实体.现在,如果我尝试使用可能不唯一的所有其他字段的值保存实体.实体将自动填充插入行的id.它是如何获得主键值的?

编辑:

如果主键列是标识列,其值完全由数据库决定.所以它执行一个没有该列值的insert语句,并且db决定要使用的值,它是否会回复它的决定(我不这么认为)

Joe*_*don 7

Hibernate使用三种方法来提取DB自动生成的字段,具体取决于jdbc驱动程序或您正在使用的方言的支持.

Hibernate提取生成的字段值将其放回pojo中:

  1. 使用方法Statement.getGeneratedKeys(Statement javadocs)

    要么

  2. 直接从insert语句插入并选择生成的字段值.(方言 Javadocs)

    要么

  3. 在插入之后执行select语句以检索生成的IDENTITY值

所有这些都是由hibernate内部完成的.

希望它是您正在寻找的解释.