当前位置: 首页 > 知识库问答 >
问题:

MapStruct:如何使用映射器映射带有复合键JPA的视图对象?

欧阳炜
2023-03-14

我有如下目标实体:

public class ApplicationUsage {
    @Id
    private ApplicationUsagePK appUsage;    //Guid  No documentation available.
    private String name;
    .
    .
    public ApplicationUsage(String id, Integer compId) {
       this.appUsage = new ApplicationUsagePK(id, compId); //This is present in ApplicationUsagePK initiated here which acts are composite key
    }

源对象如下所示:

public class ApplicationUsage {

    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("name")
    @Expose
    private String name;
@Mapper
public interface ApplicationUsageMapper {
    ApplicationUsageMapper MAPPER = Mappers.getMapper( ApplicationUsageMapper.class );

    ApplicationUsage entityToDao(com.inte.meow.vo.computer.ApplicationUsage source);
}
ApplicationUsage aUsage = ApplicationUsageMapper.MAPPER.entityToDao(agreement.getBody());
aUsage.initiateApplicationUsage(agreement.getBody().getId(), compId);

共有1个答案

韩朝斑
2023-03-14

您可以使用@context注释来完成

@Mapper
public interface ApplicationUsageMapper {
    ApplicationUsageMapper MAPPER = Mappers.getMapper( ApplicationUsageMapper.class );

    @Mapping(target = "appUsage", source = "source", qualifiedByName = "getAppUsage")
    ApplicationUsage entityToDao(com.inte.meow.vo.computer.ApplicationUsage source, @Context Integer compId);

    @Named("getAppUsage")
    default ApplicationUsagePK toAppUsage(com.inte.meow.vo.computer.ApplicationUsage source, @Context Integer compId) {
        return new ApplicationUsagePK (source.getId(), compId));
    }
}
 类似资料:
  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

  • 问题内容: 我在为某些实体设置jpa映射时遇到麻烦。我有一个如下定义的父实体。 然后,我有一个带有复合键的子实体,以及此表的主键的外键,如下所示: 我知道子实体不正确,但是我不确定如何将其设置为具有复合PK。我知道我需要设置一个PK类,但是当一个字段是父类的外键时,我不确定该怎么做。一旦设置好,父级将如何引用子级实体? 任何帮助表示赞赏。 问题答案: 这受JPA 2规范的 第2.4.1节“与派生身

  • 我有一个映射定义为 其中定义如下: 反向映射是使用处理的。如何为反向映射指定自定义映射?

  • 我有两个表:A和B,都有一个复合主键。表B的PK也是表a主键的外键。 当我试图获取映射表B的类的实例时,我得到了以下异常: org.hibernate.TypeMismatchException 这两个类都位于package:com.cairone.ejemple01.entities 完整的日志输出为: 2016-09-21 12:28:24.505错误8568--[main] O.S.Boot

  • 是否可能在MapStruct中使用不同的映射器?我有这个映射器 是否可以将此实现更改为MapStruct?

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好