我有一个类似于以下结构的问题。
Entity Car 是一个抽象实体,可以派生为 CityCar、StationWagon、PickUp... - 每辆 Car 都有一个 Engine,它是 FuelEngine、DieselEngine、HybridEngine 等的抽象实体...
由于这是一个识别OneToOne
关系,数据库设计将两个实体合并到同一个表中(我正在手动编写以下 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;
....
}
问题是:是否可以让 POJO 显示属性private Engine engine;
而不是拥有所有 Engine 属性而没有单独的 Engines 表?Engine 类应该如何没有自己的表?