次の構造のような問題があります。
Entity Car は、CityCar、StationWagon、PickUp に派生できる抽象エンティティです... - 各車には 1 つのエンジンがあり、FuelEngine、DieselEngine、HybridEngine などの抽象エンティティです...
これは識別OneToOne
関係であるため、データベース設計では 2 つのエンティティを同じテーブルにマージしました (次の SQL を手書きで書いています。現在、SQL に少し慣れていません)。
CREATE TABLE CAR (
ID UNSIGNED INT PRIMARY KEY,
TYPE_OF_CAR CHAR,
LICENSE_PLATE VARCHAR(...),
....
ENGINE_TYPE CHAR,
ENGINE_CYLINDRATE DECIMAL, //let's say doesn't apply to ENGINE_TYPE='ELECTRIC'
ENGINE_KW_POWER DECIMAL(...) NOT NULL,
...
)
今、Hibernate でマップしたいと思います。Car
クラスとサブクラスの構文に自信があります。現在、私の POJO は次のようになっています。
@Entity
@Inheritance(SINGLE.TABLE)
@DiscriminatorColumn(TYPE_OF_CAR)
public class Car{
private int id;
....
private char engineType;
private float engineCylindrate;
....
}
問題は、 Engines 用の個別のテーブルを持たずに、private Engine engine;
すべての Engine 属性を持つ代わりにPOJO にプロパティを表示させることは可能ですか? 独自のテーブルを持たない場合、Engine クラスはどのように見えるでしょうか?