为什么session.save(object)没有在hibernate中自动设置id?

时间:2015-02-16 08:00:53

标签: java hibernate

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

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;

1 个答案:

答案 0 :(得分:2)

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

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