我正在使用Dozer将我的DTO映射到JPA实体.
其中一个用例是已经存在的实体的DTO表示到达WS,然后我找到使用JPA的实体并使用Dozer使用map(源,目标)映射方式在找到的实体上映射DTO(不是地图(source,destinationClass)).
我在我的实体(例如地址)上有一些值对象(使用经典的不可变值对象语义)作为@Embeddables.问题是,我希望dozer在设置它时始终创建一个新的Address实例,例如: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’字段.
有没有办法做到这一点?
最佳答案 我认为你可以用自定义转换器来做到这一点.推土机文档中的
custom converters部分.