【发布时间】:2013-10-22 21:14:45
【问题描述】:
我的实体类层次结构如下.. ClassB 扩展 ClassA 扩展抽象映射超类 AbstractClass
抽象类
@MappedSuperclass
public abstract class AbstractClass implements Serializable
{
}
A 类
@Table(name = "TABLE_ONE")
@SecondaryTable(name = "TABLE_TWO",
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="Type", discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue("ClassA")
public class ClassA extends AbstractClass
{
@Column(name = "CLASSA_XML")
private String ClassAXML;
@PrePersist
@PreUpdate
public void covertObjectToXml()
{
this.ClassAXML= JAXBUtilities.marshal(Object);
}
@PostLoad
public void convertXmlToObject()
{
//does unmarshal
}
}
B 类
@DiscriminatorValue("ClassB")
public class ClassB extends ClassA
{
@Column(name = "CLASSB_XML", table = "TABLE_TWO")
private String ClassBXML;
@PrePersist
@PreUpdate
public void covertObjectToXml()
{
this.ClassAXML= JAXBUtilities.marshal(Object);
}
@PostLoad
public void convertXmlToObject()
{
//does unmarshal
}
}
问题:当我坚持使用 ClassB 实体时。未调用 ClassA 回调方法,并且我的 classAXml 属性中的值未保留。
是否有为我继承的实体类结构概括回调方法(即covertObjectToXml和convertXmlToObject)..以便当我坚持使用 ClassA 和 ClassB 都是单独的,我的回调方法是基于继承分别调用的,并且它们的值可以被持久化。
注意:
- 我已从 ClassA 中删除了回调方法并将其概括为 classB 并坚持,但我的要求主要是个人的 classA 和 ClassB 的持久化。
- 我的回调方法不应该在 mapedSuperClass 中,即 AbstractClass。
提前致谢
【问题讨论】:
标签: java inheritance jpa entity eclipselink