Skip to content

@Embeddableのネストは実現可能でしょうか? #1397

Answered by nakamura-to
mazeneko asked this question in Q&A
Discussion options

You must be logged in to vote

ありがとうございます。
実現したいことを理解できました。

一番最初に提示いただいたデータ構造を利用する前提で案を2つほど挙げてみます。

案1: ClearableFieldPatchをExternal Domainで扱う方法

ClearableFieldPatchから@Embeddableを外し、次のような@ExternalDomainが注釈されたDomainConverterの実装クラスでシリアライズ/デシリアライズします。この方法では@Embeddableのネストが解消され型パラメータも使えます。

@ExternalDomain
public class ClearableFieldPatchConverter implements DomainConverter<ClearableFieldPatch<?>, String> {

  @Override
  public String fromDomainToValue(ClearableFieldPatch<?> clearableFieldPatch) {
    // シリアライズ(例えばJSONに変換)
  }

  @Override
  public ClearableFieldPatch<?> fromValueToDomain(String value) {
    // デシリアライズ(例えばJSONから変換);
  }
}

(データベースがJSON型をサポートしていれば、上記コードを少し変更してJSON型に対応させることも可能です)

案2: ドメインモデルとDBのデータモデルを分ける方法

やりた…

Replies: 1 comment 9 replies

Comment options

You must be logged in to vote
9 replies
@nakamura-to
Comment options

@mazeneko
Comment options

@nakamura-to
Comment options

Answer selected by mazeneko
@mazeneko
Comment options

@nakamura-to
Comment options

@mazeneko
Comment options

@mazeneko
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants