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注释实现实体和复合主键类
产生的次级问题是:
感谢PK在继承树的根目录中定义。根定义所有 说明书上说
必须在作为实体层次结构根的实体类或作为实体层次结构中所有实体类的(直接或间接)超类的映射超类上定义主键。主键必须在实体层次结构中精确定义一次。因此,继承关系/子表可能永远不会扩展主键列集???好的,这也意味着子类不会精确地获得任何@IdClass注释。您不能定义“在实体层次结构中一次”,在“根类”中定义它,然后在子类中定义。请注意,
(名字,姓氏)
对于主键来说是个坏主意。看见我个人知道至少有一个人没有名字。这只是一个例子,不是一个真正选择的关键。我知道其中的含义,但谢谢。