【发布时间】:2017-12-11 14:15:28
【问题描述】:
我已经使用 JHipster v4.6.0 生成器生成了一个新项目,我正在使用它的 EntityMapper 接口在域和 DTO 对象之间进行映射。
public interface EntityMapper <D, E> {
public E toEntity(D dto);
public D toDto(E entity);
public List <E> toEntity(List<D> dtoList);
public List <D> toDto(List<E> entityList);
}
我需要使用 Spring 投影来拥有更小的域和 DTO 对象,(我不想要实体的所有字段),所以我创建了一个只有我需要的字段的 getter 的接口,并且我在存储库中创建了一个方法来检索此接口类型(遵循 Spring 参考指南)
public interface ClienteIdENome {
Long getId();
String getNome();
}
@Repository
public interface ClienteRepository extends JpaRepository<Cliente,Long> {
ClienteIdENome findById(Long id);
}
查询 findById 检索只有 id 和 nome 字段的 ClienteIdENome 对象。
现在,我想将此对象映射到以下 DTO:
public class ClienteIdENomeDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@NotNull
@Size(max = 50)
private String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
所以,我创建了映射器接口:
@Mapper(componentModel = "spring", uses = {})
public interface ClienteIdENomeMapper extends EntityMapper<ClienteIdENomeDTO, ClienteIdENome> {
}
但是 Eclipse 向我报告了 EntityMapper 接口中方法“public E toEntity(D dto)”的错误,并显示以下消息:
没有为返回类型 it.andrea.ztest01.repository.ClienteIdENome 注册实现类型。
有什么帮助吗? 非常感谢
【问题讨论】:
-
在这种情况下为什么需要 DTO?您的 DTO 看起来像您的接口的实现。
标签: jhipster projection mapstruct