有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

我在基于上述id创建的对象中有另一个变量data

例如:

private String data;

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

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

我以前使用过PrePersist注释,在本例中,该注释不起作用


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    您必须使用数据库触发器,因为通过标识设置的ID值在插入之后才可用。然后需要使用特定于提供者的方法通过触发器(如EclipseLink的eclipse)获取值集。/jpelink/org/extensions/jpelina/。或者,您可以使用persist、flush强制插入该ID值,然后更新字段值。另一种方法是使用表排序或其他允许预分配的生成类型,以便id值在persist上可用