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
,但您需要定义一个单向映射器。从 ClienteIdENome
到 ClienteIdENomeDTO
。
您的映射器需要如下所示:
public interface ClienteIdENomeMapper {
ClienteIdENomeDTO toDto(ClienteIdENome entity);
List <ClienteIdENomeDTO> toDto(List<ClienteIdENome> entityList);
}
我不了解 JHipster,所以我不能说使用不同于 EntityMapper
的映射器意味着什么。
我用 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
,但您需要定义一个单向映射器。从 ClienteIdENome
到 ClienteIdENomeDTO
。
您的映射器需要如下所示:
public interface ClienteIdENomeMapper {
ClienteIdENomeDTO toDto(ClienteIdENome entity);
List <ClienteIdENomeDTO> toDto(List<ClienteIdENome> entityList);
}
我不了解 JHipster,所以我不能说使用不同于 EntityMapper
的映射器意味着什么。