5

Dozerを使用してDTOをJPAエンティティにマッピングしています。

ユースケースの1つは、既存のエンティティのDTO表現がWSに到着し、JPAを使用してエンティティを検索し、Dozerを使用しmap(source、destination)マッピング方法(map(source、destinationClass)ではありません)。

@Embeddablesとして、エンティティ(Addressなど)にいくつかの値オブジェクト(従来の不変の値オブジェクトのセマンティクス)があります。重要なのは、ドーザーが既存のAddressインスタンスにマップするのではなく、たとえばEmployeeオブジェクトに設定するときに、常に新しいAddressインスタンスを作成するようにすることです。

したがって、次のクラスを使用します。

public class Employee {

    private Address address;

    public void setAddress(Address address) {
        this.address = address;
    }

    public Address getAddress() {
        return this.address;
    }

}

getAddress()を使用して新しいAddress'フィールドをマップしようとするのではなく、常に新しいAddressインスタンスを使用してdozerがsetAddress()を呼び出すようにします。

これを行う方法はありますか?

4

1 に答える 1

3

カスタムコンバーターでこれを行うことができると思います。dozer のドキュメントのカスタム コンバーターに関するセクションを参照してください。

于 2011-04-12T22:47:25.117 に答える