我正在使用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;
答案 0 :(得分:2)
由于id是由数据库生成的,因此只有在实际写入实体后才会存在。由于hibernate试图延迟实际写入以使某些数据库命中安全,session.save()
不一定会触发id生成。
尝试在保存后添加session.flush()
,然后查看是否填充了ID。