代码之家  ›  专栏  ›  技术社区  ›  Kawu

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

  •  0
  • Kawu  · 技术社区  · 14 年前

    给出下表:

    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注释实现实体和复合主键类?

    出现的子问题有:

    1. 子类是否定义自己的ID类?
    2. 如果是,它们是否继承自超级类的ID类?
    3. 子类是否获得@idclass注释?

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

    谢谢

    1 回复  |  直到 14 年前
        1
  •  1
  •   DataNucleus    14 年前

    pk是在继承树的根目录中定义的。根定义所有。

    说明书上说 主键必须在作为实体层次结构根的实体类上定义,或者在作为实体层次结构中所有实体类的(直接或间接)超类的映射超类上定义。在实体层次结构中,主键必须定义一次。