为什么 session.save(object) 在休眠时不自动设置 id?

why session.save(object) does not set id automatically in hibernate?

我正在使用 hibernate 作为我的应用程序的 JPA 提供程序,现在我需要我需要最近存储的请求对象的 ID,但是当我执行 request.getId 时它会打印 null .

System.out.println("before save : request id's = "+request.getId());   
session.save(request);    
System.out.println("after save : request id's = "+request.getId());

我关注了这个question

此代码的输出:

before save : request id's = null

after save : reqeust id's = null

public class Request implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

由于id是由数据库生成的,只有在实际写入实体后才会存在。由于 hibernate 试图延迟实际写入,因此它可能会保护一些数据库命中,session.save() 不一定会触发 id 生成。

尝试在保存后添加 session.flush(),然后查看是否填充了 id。