我有一个自动生成的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(串行字段)按预期递增。
答案 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());