Hibernate继承Single_table

时间:2012-12-31 13:56:43

标签: hibernate inheritance

我已经设置了我的课程,如下所示。 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;
...
}

2 个答案:

答案 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;
...
}