首页 文章

如何使用具有多列/复合主键的表(JPA 1.0 @IdClass)实现继承?

提问于
浏览
0

给出以下表格:

CREATE TABLE Employees
(
  first_name VARCHAR(50) NOT NULL,
  last_name VARCHAR(50) NOT NULL,
  birth_date DATE NOT NULL,
  PRIMARY KEY (first_name, last_name)
);

CREATE TABLE Managers
(
  first_name VARCHAR(50) NOT NULL,
  last_name VARCHAR(50) NOT NULL,
  salary INTEGER NOT NULL,
  total_bonus INTEGER NULL,
  PRIMARY KEY (first_name, last_name),
  CONSTRAINT managers_employees_fk FOREIGN KEY (first_name, last_name) REFERENCES Employees (first_name, last_name)
);

CREATE TABLE Workers
(
  first_name VARCHAR(50) NOT NULL,
  last_name VARCHAR(50) NOT NULL,
  wage INTEGER NOT NULL,
  PRIMARY KEY (first_name, last_name),
  CONSTRAINT workers_employees_fk FOREIGN KEY (first_name, last_name) REFERENCES Employees (first_name, last_name)
);

如何使用JPA 1.0 @IdClass注释实现实体和复合主键类?

产生的子问题是:

  • 子类是否定义了自己的ID类?

  • 如果是这样,他们是否继承了超类的ID类?

  • 子类是否获得@IdClass注释?

注意这个问题是故意天真的 . 我想看看类声明,带有字段访问注释的属性,没有getter和setter可能就足够了 .

谢谢

1 回答

  • 1

    PK在继承树的根中定义 . 根定义了所有 .

    规范说主键必须在作为实体层次结构的根的实体类上定义,或者在映射的超类上定义,该超类是实体层次结构中所有实体类的(直接或间接)超类 . 主键必须在实体层次结构中只定义一次 .

相关问题