は...次JPA:派生クラスを独自のテーブルに保存して、参照されるフィールドがMappedSuperclassですか?
を行うには、それは可能です私はMappedSuperclassアクションと呼ばれるがあります。また、私は2クラス(エンティティ)を持っている
@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;
}
}
例GenericActionのために、このクラスから派生:
@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;
}
:ジャーナルと呼ばれる別のエンティティで
@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;
}
}
設定されたこのアクション属性があります
私のコードでは、インスタンスGenericActionをインスタンス化し、Journalのセッターで設定します。ジャーナルを永続化するときは、GenericActionの内容を独自のテーブルに保存する必要がありますが、これは起こりません。 GenericActionのバイトコードをJournalのActionフィールドに保存します。
これはまったく可能ですか?私はあなたの質問を得た場合
あなたは正しく、InheritanceType.TABLE_PER_CLASSで動作します。私は抽象クラス "ActionBase"とGenericAction(そして他のアクション)をこのクラスに拡張します。 – Bevor