У меня есть два объекта: «POST» и «TAG» с отношения многие ко многим. Упрощенный пример:
Код: Выделить всё
@Entity
public class Post{
private String title;
@ManyToMany(...)
Set tags;
}
Код: Выделить всё
@Entity
public class Tag{
private String name;
@ManyToMany(...)
Set posts;
Код: Выделить всё
@Builder
//...
public class PostDTO{
private String title;
Set tags;
}
Код: Выделить всё
@Builder
//...
public class TagDTO{
private String name;
Set post;
}
Предположим, у меня есть класс, который сопоставляет сущность Post с PostDTO
Код: Выделить всё
public class mapper{
public PostDTO mapToPostDTO(Post post){
Set tagDTOs = new HashSet();
post.getTags().stream().forEach(tag->tagDTOs.add(mapTotagDTO(Tag)));
return PostDTO.builder()
.title(post.getTitle())
.tags(tagDTOs)
.build();
}
private TagDTO mapToTagDTO(Tag tag){ //Intentionally skip the Set field
return TagDTO.builder()
.name(tag.getName())
.build()
}
Например:
Код: Выделить всё
@Builder
//...
public class SimpleTagDTO{
private String name;
}
Код: Выделить всё
@Builder
//...
public class PostDTO{
private String title;
Set tags;
}
Код: Выделить всё
public class mapper{
public PostDTO mapToPostDTO(Post post){
Set setTags = new HashSet();
post.getTags().stream().forEach(tag->setTags.add(mapToSimpleTagDTO(tag)));
return PostDTO.builder()
.title(post.getTitle())
.tags(setTags)
.build();
}
private SimpleTagDTO mapToSimpleTagDTO(Tag tag){
return SimpleTagDTO.builder()
.name(tag.getName());
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -my-entity