我已经设置了我的课程,如下所示。 Hibernate ddl生成2个表Admin和Customer。根据SINGLE_TABLE策略,我原本只期望一张表。
@MappedSuperclass
public abstract class BaseUser{
...
}
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Admin extends BaseUser{
...
}
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Customer extends BaseUser{
@OneToMany
private List<Order> orders;
...
}
答案 0 :(得分:1)
不,单表继承的工作方式不同。继承策略需要在超类上定义。请参阅JPA Wikibook以供参考。
@Entity
@Inheritance
@DiscriminatorColumn(name="USER_TYPE")
@Table(name="USER")
public abstract class BaseUser{
...
}
@Entity
@DiscriminatorValue("A")
public class Admin extends BaseUser{
...
}
@Entity
@DiscriminatorValue("C")
public class Customer extends BaseUser{
@OneToMany
private List<Order> orders;
...
}
请注意,根据您的数据库,您可能会或可能不会调用您的表格USER
。还有example for how to use @MappedSuperclass。
答案 1 :(得分:-1)
这似乎可行,但不确定为什么@MappedSuperclass不会。
@Entity
@Inheritance
public abstract class BaseUser{
...
}
@Entity
public class Admin extends BaseUser{
...
}
@Entity
public class Customer extends BaseUser{
@OneToMany
private List<Order> orders;
...
}