JHipster EntityMapper接口(mapstruct):映射一个Spring投影接口

JHipster EntityMapper interface (mapstruct): map a Spring projection interface

我用 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 向我报告方法 "public E toEntity(D dto)" 的 EntityMapper 接口中的错误消息:

没有为 return 类型注册实现类型 it.andrea.ztest01.repository.ClienteIdENome.

有什么帮助吗? 非常感谢

你的 ClienteIdENome 并不是一个真正的实体。我认为您不需要使用 EntityMapper,但您需要定义一个单向映射器。从 ClienteIdENomeClienteIdENomeDTO

您的映射器需要如下所示:

public interface ClienteIdENomeMapper {
    ClienteIdENomeDTO toDto(ClienteIdENome entity);
    List <ClienteIdENomeDTO> toDto(List<ClienteIdENome> entityList);
}

我不了解 JHipster,所以我不能说使用不同于 EntityMapper 的映射器意味着什么。