0

以下の対応は可能でしょうか...

Action という 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;
    }
}

さらに、GenericAction など、このクラスから派生する 2 つのクラス (エンティティ) があります。

@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;
    }
}

Journal と呼ばれる別のエンティティには、次の Action 属性セットがあります。

@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 のセッターで設定しています。Journal が永続化される場合、GenericAction のコンテンツを独自のテーブルに保存する必要がありますが、これは行われません。GenericAction のバイト コードを Journal の Action フィールドに保存します。

これはまったく可能ですか?

4

1 に答える 1