我对继承hibernate(单表)的问题很少,
外键可以在抽象类上吗? - 如果其中一个孩子不使用它怎么办?
车辆成员应该受到保护吗?
请分享任何其他想法!
谢谢!
以下是一个例子:
@Entity
@Table(name = "vehicles")
@DiscriminatorColumn(name="type")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class Vehicle {
@Id
@Column(name = "plate" ,nullable = false)
private String plate;
@OneToMany(cascade=CascadeType.ALL)
private List<EmissionInspection> insepections = new ArrayList<EmissionInspection>();
public List<EmissionInspection> getInsepections() {
return insepections;
}
...
}
@Entity
@DiscriminatorValue("POST_OFFICE_TRUCK")
@Table(name = "truck")
public class PSTruck extends Vehicle {
}
@Entity
@DiscriminatorValue("TRUCK")
@Table(name = "truck")
public class Truck extends Vehicle {
private insuranceDate;
}
@Entity
@DiscriminatorValue("PRIVATE_CAR")
@Table(name = "truck")
public class PrivateCar extends Vehicle {
private insuranceDate;
}
答案 0 :(得分:1)
“外键可以在抽象类上吗?” - &gt;是
“如果其中一个孩子没有使用它?” - &gt;那么它就是无引用
“车辆成员应该受到保护吗?” - &gt;如果您有公共getter / setter 否,否则如果您需要获取/设置而不使用公共get / set,那么是
抽象类的表名和其他类不同。通常,继承类没有任何@Table
注释