使用Dozer映射值对象

时间:2011-03-21 06:06:52

标签: java mapping dozer

我正在使用Dozer将我的DTO映射到JPA实体。

其中一个用例是已经存在的实体的DTO表示到达WS,然后我找到使用JPA的实体并使用Dozer在找到的实体上映射DTO map(源,目标)映射方式(不是 map(source,destinationClass))。

我的实体(例如地址)上有一些值对象(使用经典的不可变值对象语义)为@Embeddables。问题是,我希望推土机在设置它时始终创建一个地址实例,例如:Employee对象,而不是映射在现有的Address实例上。

所以使用以下类:

public class Employee {

    private Address address;

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

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

}

我希望dozer始终使用新的Address实例调用setAddress(),而不是尝试使用getAddress()映射新的Address'字段。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

我认为您可以使用自定义转换器执行此操作。请参阅推土机文档中的custom converters部分。