Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对具有多列/复合主键(JPA1.0@IdClass)的表实现继承?_Java_Inheritance_Jpa_Annotations_Composite Primary Key - Fatal编程技术网

Java 如何对具有多列/复合主键(JPA1.0@IdClass)的表实现继承?

Java 如何对具有多列/复合主键(JPA1.0@IdClass)的表实现继承?,java,inheritance,jpa,annotations,composite-primary-key,Java,Inheritance,Jpa,Annotations,Composite Primary Key,鉴于下表: 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(5

鉴于下表:

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)
);
如何使用JPA1.0@IdClass注释实现实体和复合主键类

产生的次级问题是:

  • 子类是否定义了自己的ID类
  • 如果是这样,它们是否从超类的ID类继承
  • 子类是否获得@IdClass注释
  • 请注意,这个问题是故意天真的。我想看看类声明,没有getter和setter的带有字段访问注释的属性可能就足够了


    感谢

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

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

    因此,继承关系/子表可能永远不会扩展主键列集???好的,这也意味着子类不会精确地获得任何@IdClass注释。您不能定义“在实体层次结构中一次”,在“根类”中定义它,然后在子类中定义。请注意,
    (名字,姓氏)
    对于主键来说是个坏主意。看见我个人知道至少有一个人没有名字。这只是一个例子,不是一个真正选择的关键。我知道其中的含义,但谢谢。