寫在開頭
使用jhipster聲明的OneToMany在One的一方DTO中是沒有與Many的DTO的映射關系的, 為了在One的一方DTO中使用Many的DTO, 使用以下三步解決此問題。
步驟
1. OneDTO 中的"mark 1"處為自己寫的一對多的關系, 此處變量名稱不能與實體One中相應的變量名稱一致,否則編譯失敗。
2. OneMapper 中的"mark 2"處 uses屬性添加ManyMapper。
2. OneMapper 中的"mark 3"處使用@Mapping注解聲明 Entity 轉 DTO 的映射關系。
Entity
@Entity@Table(name = "one")public class One { ... @OneToMany(mappedBy = "one") private Set<Many> manys = new HashSet<>(); ... public void setManys(Set<Many> manys) { this.manys = manys; } public Set<Many> getManys() { return manys; }}@Entity@Table(name = "many")public class Many { ... @ManyToOne private One one;}
DTO
public class OneDTO { ... // mark 1 private Set<ManyDTO> manyDTOS = new HashSet<>(); ... public void setManyDTOS(Set<ManyDTO> manyDTOS) { this.manyDTOS = manyDTOS; } public Set<ManyDTO> getManyDTOS() { return manyDTOS; }} public class ManyDTO { ... private Long oneId; ... public void setOneId(Long oneId) { this.oneId = oneId; } public Long getOneId() { return oneId; }}
Mapper
// mark 2@Mapper(componentModel = "spring", uses = {ManyMapper.class})public interface OneMapper extends EntityMapper<OneDTO, One> { // mark 3 @Mapping(souce = "manys", target = "manyDTOS") OneDTO toDto(One one); ... }@mapper(componentModel = "spring", uses = {OneMapper.class})public interface ManyMapper extends EntityMapper<ManyDTO, Many>{ ... }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選