2

Jens Schauder による Spring Data JDBC と Doamin-Driven Design についての素敵な話を聞いた後 (AFOL として、私はあなたの例が大好きです ;-) 私は少し実験しましたが、すぐに自分のドメイン タイプに行き詰まりました。もちろん、たとえば、TelephoneNumber を String にマップして戻すなど、カスタム JDBC コンバーターを作成する必要がありますが、LocalDate を開始日とし、LocalDate を終了日とする期間などのより複雑な型をどのように処理すればよいでしょうか。または、番地、番地、郵便番号、市区町村を含む住所...

これらのタイプに注釈を追加することはできません。たとえば、請求先住所と配送先住所など、用途によって意味が異なる可能性があるためです。

JPA/Hibernate を使用すると、複合休止状態ユーザー タイプを使用または実装できます@Columns@AttributeOverrides、Spring Data JDBC では単純なコンバーターしか見つかりませんでした。

Spring Data JDBC では、これは (まだ) 可能ではありませんか?

4

1 に答える 1

1

@Embeddedあなたが探しているのは注釈だと思います。1.1.x バージョンで使用できます。それ(およびコードを短く保つためにLombok)を使用すると、次のPeriodようにモデル化できます。

@Value
class Period {
    LocalDate from;
    LocalDate until;
}

そして、次のように使用します。

@Value
class SpecialOffer {
     String name;
     int rebate;

     @Embedded(onEmpty = OnEmpty.USE_EMPTY, prefix="valid_")
     Period valid;
}

SPECIAL_OFFERこれにより、オブジェクトが列 、、、、NAMEREBATE持つ単一のテーブルにマップされますVALID_FROMVALID_UNTIL

現在Converter、単一の属性のみに を指定する方法はありません。これを回避する方法は、値の周りにラッパーを作成し、そのためのコンバーターを作成することです。

于 2019-09-13T05:19:38.713 に答える