Dozer - из списка объектов в список идентификаторов объектов
У меня есть объект домена с именем пользователя:
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 взял идентификатор профиля для каждого профиля в списке и сохранил его в списке 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>
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, какой метод использовать, чтобы сделать преобразование.