2

我有一个抽象@MappedSuperclassVehicle, 和一个具体的实现Car

@MappedSuperclass
public abstract class Vehicle { ... }

@Entity
@Table(schema = "Dealer", name = "Cars")
public class Car {
    ...
    // you can have any color you like, as long as it's black...
    private final String color = "Black";  

    public String getColor() { return "Black"; }
}

但是,这些实现不在我的控制之下,所以我不能更改Vehicleor Car,我也不能更改数据库。Car假设在经销商的模式中有一个我可以访问的只读列表。当然,里面也有很多其他的方法,还有其他CarVehicles,,,Bike等等Skateboard

我经营一家油漆店,所以我提供PaintedCargetColor(). 在所有其他方面,此类与以下内容相同Car

public class PaintedCar extends Car {
    ...
    private String customColor;

    @Override
    public String getColor() { return customColor; }

}

相同的Car可以多次绘制,或者不同的Car所有者可以以不同的方式绘制不同的实例,因此存在Car一对多PaintedCar的可能性。

从理论上讲,我应该能够将表示 a 所需的所有信息存储PaintedCar在带有字段的表中:

int paintedCarId;
int carId;  /* FK to Car */
varchar color; 

请注意,它PaintedCar必须是 的实例Car,而不仅仅是Vehicle. 但是,我不太清楚如何让 Hibernate 保持这种关系。有什么诀窍?

4

0 回答 0