我在定义多层继承的架构时遇到问题,我的情况如下:
Model(id,created)
UserModel扩展Model(login,password)
CustomerModel扩展UserModel(orders)
StoreOwnerModel扩展UserModel(stores)
ProductModel扩展Model(name,price)
我在Model
中设置了继承策略为TABLE_PER_CLASS,这意味着我希望为Model
的每个子类创建一个表。
而在UserModel
中,继承策略设置为SINGLE_TABLE,以便所有UserModel
的子类只有一个表。
但是在我的数据库中,我发现为每个UserModel的子类生成了一个表。
在生成的USERS
表中,我找不到对应于UserModel
的DiscriminatorColumn user_type
。
以下是我的实体:
Model.class
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@MappedSuperclass
public abstract class Model {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private Integer id;
@DateTimeFormat(pattern="dd/MM/yyyy hh:mm:ss")
private Date created;
//getters/setters
}
UserModel.class
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="user_type",discriminatorType=DiscriminatorType.STRING)
@SecondaryTable(name="USERS")
@DiscriminatorValue("user")
public class UserModel extends Model{
@Column(unique=true)
private String login;
//getters & setters
}
CustomerModel.class
@Entity
@DiscriminatorValue(value="customer")
public class CustomerModel extends UserModel{
private List<OrderModel> orders;
//getters & setters
}
StoreOwnerModel.class
@Entity
@DiscriminatorValue(value="store_owner")
public class StoreOwnerModel extends UserModel{
private List<StoreModel> stores;
//getters & setters
}
ProductModel.class
@Entity
public class StoreOwnerModel extends UserModel{
private String name;
private double price;
//getters & setters
}
PS:这不是重复的问题,我在之前的任何问题中都没有找到答案。