【发布时间】:2022-10-23 01:17:17
【问题描述】:
我有这个实体:
public class Character {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String image;
@Column(nullable = false)
private String name;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "characters_movies",
joinColumns = @JoinColumn(name = "character"),
inverseJoinColumns = @JoinColumn(name = "movie")
)
private List<Movie> movies;
这个实体的 DTO:
public class CharacterDTO extends AbstractResponse{
private int id;
private String image;
private String name;
private List<MovieDTO> movies;
public CharacterDTO(String image, String name){
this.image= image;
this.name= name;
}
}
这个映射器:
@Mapper(componentModel = "spring", uses = MovieMapper.class)
public interface CharacterMapper {
List<CharacterDTO> toCharactersDTO(List<Character> characters);
@InheritInverseConfiguration(name = "toCharacterDTO")
Character toCharacter(CharacterDTO characterDTO);
default CharacterDTO toCharacterDTO(Character character, String o){
return new CharacterDTO(character.getImage(), character.getName());
}
default CharacterDTO toCharacterDTO(Character character){
return new CharacterDTO(character.getImage(), character.getName(), character.getAge(), character.getWeight(), character.getHistory(), null);
}
}
我有 2 种方法将映射器映射到 DTO,因为在某些情况下我不想显示 id。这种方法有效(如果有更好的方法,我不这样做),但我想指定 toCharactersDTO 以使用具有 2 个参数的方法。知道我能做到吗?
【问题讨论】: