Hibernate に関連する次の問題についての指針はほとんどありません。これは、親子関係を持つ単一のデータベース テーブルを使用して継承を実装することに関連しています。例えば:
CREATE TABLE Employee (
empId BIGINT NOT NULL AUTO_INCREMENT,
empName VARCHAR(100) NOT NULL,
managerId BIGINT,
CONSTRAINT pk_employee PRIMARY KEY (empId)
)
ここで、managerId列は null であるか、Employeeテーブルの別の行を指している可能性があります。ビジネス ルールでは、従業員はすべての報告先について知り、上司について知る必要があります。ビジネス ルールでは、行が null managerIdを持つことも許可されます(組織の CEO にはマネージャーがいません)。
この関係を Hibernate でどのようにマッピングすればよいでしょうか。標準の多対 1 の関係はここでは機能しません。特に、対応する「従業員」エンティティ クラスとしてだけでなく、「マネージャー」、「アシスタント マネージャー」、「エンジニア」などの複数のクラスとしてエンティティを実装したい場合は、それぞれ「従業員」スーパー エンティティ クラスから継承します。 、実際にはすべてに適用されない属性を持つエンティティもあります。たとえば、「マネージャー」は特典を取得し、他のエンティティは取得しません (対応するテーブル列はもちろん null を受け入れます)。
サンプルコードをいただければ幸いです (Hibernate 3 アノテーションを使用するつもりです)。