2

我有一个名为 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>
4

1 回答 1

0

解决 了只需添加到源类这个方法

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 使用哪种方法进行转换。

于 2015-09-17T13:58:49.353 回答