是否可以執行下列操作...JPA:是否可以將派生類保存在其自己的表中,從而引用的字段是MappedSuperclass?
我有一個名爲MappedSuperclass行動:
@MappedSuperclass
public class Action extends EntityBase
{
private static final long serialVersionUID = 2604473746836781718L;
private String event;
public String getEvent()
{
return event;
}
public void setEvent(String event)
{
this.event = event;
}
}
而且我有2類(實體),從這個類派生,例如GenericAction:
@Entity
@Table(name = "GENERIC_ACTION")
@AttributeOverrides({@AttributeOverride(name = "id", column = @Column(name = "GAC_ID")),
@AttributeOverride(name = "version", column = @Column(name = "GAC_VERSION")), @AttributeOverride(name = "event", column = @Column(name = "GAC_EVENT"))})
public class GenericAction extends Action
{
private static final long serialVersionUID = 2694061082912048881L;
@Column(name = "GAC_PAYLOAD")
private String payload;
public String getPayload()
{
return payload;
}
public void setPayload(String payload)
{
this.payload = payload;
}
}
在另一個實體,稱爲雜誌有這樣的動作屬性設置:
@Entity
@Table(name = "JOURNAL")
@AttributeOverrides({@AttributeOverride(name = "id", column = @Column(name = "JRN_ID")),
@AttributeOverride(name = "version", column = @Column(name = "JRN_VERSION"))})
public class Journal extends EntityBase
{
private static final long serialVersionUID = 2525323851057436815L;
@Column(name = "JRN_ACTION")
private Action action;
}
在我的代碼中,我實例GenericAction並將其設置爲Journal的setter。當Journal將被保存時,它應該將GenericAction的內容保存在它自己的表中,但這不會發生。它將GenericAction的字節碼保存到日誌的操作字段中。
這可能嗎?
你說得對,它與繼承類型.TABLE_PER_CLASS一起工作。我把它放在一個抽象類「ActionBase」和GenericAction(和其他動作)擴展這個類。 – Bevor 2012-04-19 06:51:38