Étant donné les tableaux suivants:Comment implémenter l'héritage avec des tables ayant des clés primaires multi-colonnes/composites (JPA 1.0 @IdClass)?
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)
);
comment voulez-vous mettre en œuvre l'entité et les classes de clé primaire composite en utilisant les annotations de JPA 1.0?
questions sous découlant sont:
- Est-ce que des sous-classes définissent leurs propres classes d'identité?
- Si tel est le cas, héritent-ils de la classe ID de la super classe?
- Est-ce que les sous-classes obtiennent des annotations @IdClass?
Notez que la question est intentionnellement naïve. Je voudrais voir les déclarations de classe, les propriétés avec des annotations d'accès au champ sans getters et setters suffira probablement.
Merci
Notez que '(prénom, last_name)' est une idée * mauvaise * pour une clé primaire. Voir [cet article] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/). Personnellement, je connais au moins une personne sans prénom. –
Ceci est juste un exemple et non une vraie clé choisie. Je connais les implications mais merci. – Kawu