我的webapp域包含三个实体:
现在我想使用Hibernate(带有 annotations )将我的模型映射到带有客户和供应商表的rdbms架构。我不想要一个通用的Person表,我不需要它。
我想要一个客户表,其中包含名称,姓氏,... +特定客户字段以及名称,姓氏...... +特定供应商字段的供应商表。
你认为这是愚蠢的吗?相反,什么是更好的解决方案? 如何实施?答案 0 :(得分:2)
不,它不是傻瓜,它在Hibernate中直接支持,请参阅:9.1.5. Table per concrete class。
<class name="Person">
<id name="id" type="long" column="PERSON_ID">
<generator class="sequence"/>
</id>
...
<union-subclass name="Customer" table="CUSTOMER">
...
</union-subclass>
<union-subclass name="Supplier" table="SUPPLIER">
...
</union-subclass>
</class>
在带注释的JPA中,您可以写:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Person {
...
}
@Entity
public class Customer extends Person {
...
}
@Entity
public class Supplier extends Person {
...
}
如果您不需要执行交叉继承查询,例如:“给我所有名字为”Smith“的人,无论他们是客户还是供应商</ em>”,这个策略都相当不错