Java 跨多个实体使用相同UUID的策略

Java 跨多个实体使用相同UUID的策略,java,spring-boot,hibernate,jpa,spring-data-jpa,Java,Spring Boot,Hibernate,Jpa,Spring Data Jpa,我在JPA中有一个实体类,如下所示,maId充当许多其他表的主键和外键 @Table(name = "Table1") public class Test implements Serializable { @Id @Column(name = "maId", updatable = false, nullable = false) private String id; @OneToOne(optional = fals

我在JPA中有一个实体类,如下所示,maId充当许多其他表的主键和外键

@Table(name = "Table1")
public class Test implements Serializable {
    @Id
    @Column(name = "maId", updatable = false, nullable = false)
    private String id;
 
    @OneToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="maId")
    private MFieldData fieldData;

    @OneToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="maId")
    private MPS mps;

    @OneToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="maId")
    private MJob mJob;

    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="maId")
    private List<MExtension> mlExtensions;

    private Date createdDate;
    private Date lastUpdatedDate;
}
当我收到请求时,这就是API。我需要跨多个表插入数据

  • 如何实现自定义UUID(maId)生成器并在@Id中使用它
  • 我需要使用相同的maId,这是在插入数据库时跨多个实体请求的唯一id。我在用一种肮脏的方式做那件事。但是有什么JPA方法可以解决这个问题吗

  • 任何帮助都将不胜感激

    请求必须传递UUID(称为关联id)以跟踪。可以使用。若在代码中生成,调用方可能不知道它。相关id用于跟踪由于事件发布而可能在系统间传播的请求数据。

    您可能正在为#2查找
    @MapsId
    。这是两个独立的问题。请将它们分开张贴。这里回答了一个问题,另一个问题需要更多关于实际问题的细节。@Jenschauder更新了我的问题。
    @Table(name = "table 2")
    public class Test implements Serializable {
        @Id
        @Column(name = "maId", updatable = false, nullable = false)
        private String maId;
        private Integer cmd;
        private String routeId;
    }