【问题标题】:why session.save(object) does not set id automatically in hibernate?为什么 session.save(object) 不会在休眠中自动设置 id?
【发布时间】:2015-02-16 08:00:53
【问题描述】:

我正在使用 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;

【问题讨论】:

  • 尝试使用request = session.save(request),然后使用request.getId();
  • 请给我们表格的 DDL。
  • 您是否尝试使用保存调用返回的实体?
  • @TJ save 返回标识符,而不是实体。
  • @DrunkenPope:保存返回标识符,而不是实体。

标签: java hibernate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 2017-07-11
    • 1970-01-01
    • 2015-10-09
    • 2011-05-15
    • 2011-01-01
    • 2017-12-28
    • 2013-02-18
    相关资源
    最近更新 更多