我正在处理以下情况:
我们使用table-per-subclass inheritance,这意味着具体表的主键是 abstract 表上的外键引用。超类是产品,子类是图书, DVD , AudioCD ,...
现在在Java超类中,比如Product.java
,我们有enum
种产品类型:book,dvd,music等。
我们在抽象表中没有鉴别器列,也没有类型的额外表。
是否可以将enum
中的类型 Product.java
映射到正确的值,具体取决于具体对象?或者是必要的鉴别者或额外的表?
...... ....
表每子类继承映射摘录:
<class name="Product" table="PRODUCT">
<id name="id" column="IDPRODUCT" type="int">
<generator class="native" />
</id>
...
<joined-subclass name="Book" table="BOOK">
<key column="IDPRODUCT" />
<property ...
</joined-subclass>
...
......
Product.java
public class Product {
public enum Type { book, dvd, music }
...
private Type type;
...
听起来很奇怪?也许。两个独立的方设计了OO部分和DB部分......
答案 0 :(得分:4)
我可能会遗漏一些东西,但为什么你会将Type
作为一个字段?在getType()
中创建Product
抽象,并在子类中实现它以返回适当的值。