【发布时间】:2010-10-29 09:54:35
【问题描述】:
我有一个对象,其字段可以是多种对象类型。此对象在单个表中编码,其中包含字段子类型的鉴别器列。这些子类型中的每一个都将其字段映射到父对象表中的列。我似乎无法在休眠中对此进行建模。无论表中有什么子类型数据,下面的代码都会为 getSubfield() 返回 null。
架构
id 类型 whosit whatsit +----+------+--------+---------+ | 1 | “一个” | “测试” |空 | | 2 | "B" |空 | “测试” | +----+------+--------+---------+领域对象
@Entity
public class Parent {
protected @Id @GeneratedValue int id;
protected Subfield subfield;
public Subfield getSubfield() {return subfield;}
}
@Embeddable
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING)
public abstract class Subfield {}
@DiscriminatorValue("A")
public class TypeA extends Subfield {
public String whosit;
}
@DiscriminatorValue("B")
public class TypeB extends Subfield {
public String whatsit;
}
“从父 p 中选择 p”
{id=1,subfield=null}
{id=2,subfield=null}
是否有可能用这个对象模型完成我想要的,或者我需要更多的创意(这是一个遗留数据库,不建议更改架构)
【问题讨论】:
-
一位同事将我指向opensource.atlassian.com/projects/hibernate/browse/HHH-1910。我猜它不支持=\
标签: java hibernate inheritance mapping