id是数据库中的自动增量,但未在hibernate中的实体中设置

时间:2014-04-08 12:31:46

标签: java spring hibernate postgresql

我有一个自动生成的id字段:

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private long id;

在我的实体中,我将序列生成定义为:

@Entity
@SequenceGenerator(name = "sequence", sequenceName = "pes_id_seq")
@Table(name = "pes")

现在,当我使用:

保存实体时
repository.save(entity);

尝试获取新插入的行的id,如下所示:

System.out.println(entity.getId());

它始终显示1.但是,在数据库中,id(串行字段)按预期递增。

1 个答案:

答案 0 :(得分:0)

Repository.save将保存作为参数传递的实体,但它不会更新/合并(JPA术语)传递的参数。 让我们举个例子

repository.save(entity);

System.out.println(entity.getId());

在保存之前,将始终返回实体ID的值。您必须获取由Repository新创建/管理的返回对象,该对象在保存后将具有正确的ID。

entity = repository.save(entity);

System.out.println(entity.getId());