Hibernate注释 - 继承澄清

时间:2012-03-15 03:21:08

标签: hibernate annotations

我对继承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;      
}

1 个答案:

答案 0 :(得分:1)

“外键可以在抽象类上吗?” - &gt;是

“如果其中一个孩子没有使用它?” - &gt;那么它就是无引用

“车辆成员应该受到保护吗?” - &gt;如果您有公共getter / setter ,否则如果您需要获取/设置而不使用公共get / set,那么

抽象类的表名和其他类不同。通常,继承类没有任何@Table注释