Java 休眠和ID生成器:在哪一点生成ID?

Java 休眠和ID生成器:在哪一点生成ID?,java,hibernate,Java,Hibernate,我有一个自定义的类ID生成器。当我创建此类的新实例并使用.save()将其保存到数据库时,实际生成的ID是哪一点?生成是延迟到事务提交时,还是在调用.save()时生成?在保存时生成id 如果您在一个事务中,您有两个选项,一个是提交,另一个是回滚,好的,那么在事务中,如果我通过save运行实例,那么该实例将收到一个ID,对吗?此外(不同,但稍微相关),我知道版本控制将应用于flush/commit。你是否碰巧知道这是正确的吗?考虑如下:客户端A和B加载相同的记录R。在提交A后更改R的数据-但不更

我有一个自定义的类ID生成器。当我创建此类的新实例并使用.save()将其保存到数据库时,实际生成的ID是哪一点?生成是延迟到事务提交时,还是在调用.save()时生成?

在保存时生成id


如果您在一个事务中,您有两个选项,一个是提交,另一个是回滚,好的,那么在事务中,如果我通过save运行实例,那么该实例将收到一个ID,对吗?此外(不同,但稍微相关),我知道版本控制将应用于flush/commit。你是否碰巧知道这是正确的吗?考虑如下:客户端A和B加载相同的记录R。在提交A后更改R的数据-但不更改R的状态。自动版本控制执行以下操作:使用字段对行数据进行版本设置。在上述场景A和B中,获取版本为t的记录R。提交A后,版本将更改,因此当B尝试提交时,版本检查将失败。另请参阅