通过mapstruct返回静态引用表的实体

问题描述 投票:0回答:1

3 个表 A、B 和一个参考表状态,其中包含 status_code 列,用于获取描述和类型等详细信息。使用 Springboot 3.2.5 和 JPA 以及

<mapstruct.version>1.5.5.Final</mapstruct.version>
<lombok-mapstruct-binding>0.2.0</lombok-mapstruct-binding>

使用 AEntity 和 BEntity 及其各自的 DTO 为 A 和 B 定义映射器。这些类中的每一个都包含状态字段,该字段是状态表中的 FK。如何定义状态映射器,以便映射器返回状态对象的 DTO 中给定状态代码的存储库中存在的实体?

java spring-boot spring-data-jpa mapstruct
1个回答
0
投票

映射器也可以以抽象类而不是接口的形式定义,并直接在映射器类中实现自定义方法。在这种情况下,MapStruct 将生成抽象类的扩展,其中包含所有抽象的实现https://mapstruct.org/documentation/stable/reference/html/#sub-class-mappings

所以粗略的代码可能是

@Mapper(componentModel = "spring)
public abstract class EntityToModelMapper {

  @Autowired EntityRepository entityRepository;

  @Mapping(target = "status", expression = "java(map(arg))")
  public abstract Model convert(Entity arg);

  StatusType map(Entity entity) {
    // use repository here and return status or throw exception
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.