Ich habe zwei Entitäten, „POST“ und „TAG“ mit einem Viele-zu-viele-Beziehung. Vereinfachtes Beispiel:
Code: Select all
@Entity
public class Post{
private String title;
@ManyToMany(...)
Set tags;
}
Code: Select all
@Entity
public class Tag{
private String name;
@ManyToMany(...)
Set posts;
Code: Select all
@Builder
//...
public class PostDTO{
private String title;
Set tags;
}
Code: Select all
@Builder
//...
public class TagDTO{
private String name;
Set post;
}
Sagen wir, ich habe eine Klasse, die eine Post-Entität einem PostDTO zuordnet
Code: Select all
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()
}
Zum Beispiel:
Code: Select all
@Builder
//...
public class SimpleTagDTO{
private String name;
}
Code: Select all
@Builder
//...
public class PostDTO{
private String title;
Set tags;
}
Code: Select all
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());
}
}