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

将DTO映射到继承的类

祝俊
2023-03-14

我的域名:

public class Moral {

    private String moralId;

    private String socialReason;

    private Framework framework;
}

public class Framework {

    private String externalId;

    private Set<String> identifiers;
}

public class Lab extends Framework {

    private String system;

    private String availability;

}

我的DTO:

public class CreateLabRequest {

    private String socialReason;

    private Set<String> identifiers;

    private String system;

    private String availability;

}

我的地图绘制程序如下所示:

@Mapping(source = "system", target = "framework.system")
@Mapping(source = "availability", target = "framework.availability")
@Mapping(source = "identifiers", target = "framework.identifiers")
Moral createLabRequestToMoral (CreateLabRequest createLabRequest);

但是,我得到了以下错误:

目标名称“Framework.system”的类型Framework中的未知属性“system”。你是说“框架外部化”吗?目标名称为“Framework.availability”的Framework类型中的未知属性“availability”。你是说“框架外部化”吗?

共有1个答案

郑博
2023-03-14

简单地说,这是不可能的!

也许你想从地图继承框架?!

否则,问题在于您想要访问一个类中没有的字段!

public class Framework {
    private String externalId;
    private Set<String> identifiers;
}

public class Lab extends Framework {
    private String system;
    private String availability;
}

正如它所说的,extends意味着您的实验室类继承自框架,这意味着实验室继承框架拥有的所有字段,而不是相反。

所以说:

"framework.system" // cannot be accessed 

因为框架类中没有名为“system”的字段

然而:

"lab.externalId" // CAN be accessed 

由于Lab类从其父类“Framework”继承了它,尽管Lab类中没有名为“system”的字段

关于JAVA继承的更多解释可以在这里找到:https://www.geeksforgeeks.org/inheritance-in-java/

 类似资料:
  • 1. 前言 本节课程和大家一起学习继承映射。通过本节课程的学习,你将了解到: 什么是继承映射; 实现继承映射的 3 种方案。 2. 继承映射 学习继承映射之前,需要搞清楚什么是继承映射? 继承是 OOP 中的概念,其目的除了复用代码之外,还用来描述对象在现实世界中的关系。 为了更好地讲解继承映射,咱们再在数据库中创建一张老师表。数据库中多了一张表,按照使用 Hibernate 的套路,理所当然应该

  • 我已经用MapStruct 1.1工作了几天,但还没有达到我所需要的。 我想做的是:我想将JPA实体映射到DTO,以便在Primefaces项目中实现更好的属性视图绑定。 所以我有我的实体如下: 病人JAVA 人JAVA 我想把这些实体画成这样: 耐心等待。JAVA 潘松多。JAVA 我编写了Mapper类和一个实用程序,就像GitHub上的官方示例中描述的那样(https://github.co

  • 我正在尝试使用AutoMapper在LLBLGen实体和DTO之间创建映射。 我的DTO如下所示: ParentEntity包含一个与DTO列表同名的ChildCollection和一个Id(需要忽略其他LLBL字段)。因此,当ParentEntity映射到父d to时,它也应该将ChildCollection映射到一个子列表。 这就是我到目前为止得到的: 这会导致Id被映射,但List的计数为0

  • 在我的服务中,我试图将实体映射到,但是由于方法返回(),我不能像通常用于那样进行如下转换。它为方法抛出“不能在'iterable'中解析方法'stream'”错误。 那么,如何将这个实体映射到?

  • 我开始使用JOOQ和dvd租赁商店数据库aka sakila。基本上,我想找一个演员和他的角色(我创建的表)。到目前为止,我想到了这个: 我希望能够将演员及其角色提取到一个对象中:DTO。我找到了这篇文章https://arnaudroger.github.io/blog/2017/03/02/jooq-one-to-many-without-dto.html但我发现使用sfm的解决方案过于冗长,

  • 我有一个带有域类的Grails项目。这个持久类应该映射到JavaDTO。我在这里发现了一个非常旧的Grails插件,它并没有真正解决这个问题。 是否有一个插件或方法: 注释映射到相应DTO类的域类属性