有 Java 编程相关的问题?

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

java JPA使用嵌套类中的id

我的数据库中有一个表

create table metrics
(
    metric_id   integer,
    time        timestamp,
    workflow_id varchar,
    job_id      varchar,
    name        varchar,
    metric_type   varchar
);

和两个物体

@Embeddable
public class Metric {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long metricId;
    private OffsetDateTime time;
    private String workflowId;
    private String jobId;
    private String name;
}
@Entity
@Table(name = "metrics")
public class CPU {
    @Enumerated(EnumType.STRING)
    private final MetricType metricType = MetricType.CPU;
    @Embedded
    private Metric metric;
}

是否可以使用Metric类中定义的@Id作为@Id用于CPU实体
我不想创建复合键,我只想使用来自Metric@Id作为CPU中的@Id


共 (1) 个答案

  1. # 1 楼答案

    似乎您想要使用的是基于鉴别器的继承:

    @Entity
    @Table(name = "metrics")
    @DiscriminatorColumn(name = "metric_type")
    public abstract class Metric {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long metricId;
        private OffsetDateTime time;
        private String workflowId;
        private String jobId;
        private String name;
    }
    
    @Entity
    @DiscriminatorValue("CPU")
    public class CPU extends Metric {
    }