我有一个名为User的域对象:
public class User {
private long id;
private String username;
private String email;
private List<Profile> profiles;
// getters & setters
}
我有相关的DTO(UserDTO)
public class UserDTO {
private long id;
private String username;
private String email;
private List<Long> profilesId;
// getters & setters
}
我想使用Dozer从域对象转换为DTO。 Profile类有一个属性
Long id;
我想要的是Dozer为列表中的每个配置文件获取配置文件的id并将其保存在DTO列表中。我可以这样做吗?我必须使用自定义转换器吗?
这是我的实际映射文件
<mapping>
<class-a>common.model.User</class-a>
<class-b>common.model.dto.UserDTO</class-b>
<field>
<a>legalEntity.id</a>
<b>legalEntityId</b>
</field>
<field type="one-way">
<a>profiles.id</a>
<b>profilesId</b>
</field>
</mapping>
答案 0 :(得分:-1)
<强>解决强> 只需将此方法添加到源类
public List<Long> getProfilesId() {
List<Long> profilesId = new ArrayList<Long>();
for(Profile p : this.profiles) {
profilesId.add(p.getId());
}
return profilesId;
}
和映射文件
<field type="one-way">
<a get-method="getProfilesId">profiles</a>
<b>profilesId</b>
</field>
表示Dozer使用哪种方法进行转换。