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 アノテーションを使用してエンティティと複合主キー クラスをどのように実装しますか?

発生するサブ質問は次のとおりです。

  1. サブクラスは独自の ID クラスを定義しますか?
  2. もしそうなら、それらはスーパークラスの ID クラスから継承しますか?
  3. サブクラスは @IdClass アノテーションを取得しますか?

質問は意図的に素朴であることに注意してください。クラス宣言を確認したいのですが、getter と setter のないフィールド アクセス アノテーションを持つプロパティで十分でしょう。

ありがとう

4

1 に答える 1

1

PK は継承ツリーのルートで定義されます。ルートがすべてを定義します。

仕様によると、主キーは、エンティティ階層のルートであるエンティティ クラス、またはエンティティ階層内のすべてのエンティティ クラスの (直接的または間接的な) スーパークラスであるマップされたスーパークラスで定義する必要があります。主キーは、エンティティ階層で 1 回だけ定義する必要があります。

于 2010-11-17T07:45:17.660 に答える