繁体   English   中英

如何使用自动增量ID在JPA中的实体中设置另一个变量

[英]How to use auto increment ID to set another variable in the entity in JPA

我的实体中有一个自动递增键。

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;

我在基于上述ID创建的对象中还有另一个变量数据

例如:

private String data;

public String setData(String str){
   this.data = str + this.getId();
}

创建对象时如何设置data变量。

我使用过PrePersist批注,在这种情况下,此批注无用。

保存实际document之前,您无法生成ID。 您所能做的就是保存文档,设置数据部分,然后再次保存,例如

Document saved = jpaRepository.save(document);
saved.setData(saved.getId() + "blah");
jpaRepository.saveAndFlush(saved);

您可以在事务下执行这些步骤以保持一致性。

您将不得不使用数据库触发器,因为通过IDENTITY设置的ID的值直到插入发生后才可用。 然后,您将需要使用提供程序特定的方法来通过触发器获取设置的值,例如EclipseLink的eclipse.org/eclipselink/documentation/2.5/jpa/extensions/…。 或者,您可以使用persist,flush强制插入应获得ID值的插入,然后更新您的字段值。 一种替代方法是使用表排序或其他允许预分配的生成类型,因此id值在持久化时可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM