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

无法用Mapstruct生成没有输入参数的映射方法

萧丁雨
2023-03-14

我正在使用Mapstruct映射器开始我的第一步。我想把一个JPA数据实体类映射到一个DTO类。这是我的源类:

@Entity
@Data
@Table(name = "projects")
public class Project {
    @Id
    private Long Id;
    private String projectName;
    private String description;

    @OneToMany(mappedBy = "project")
    List<Sprint> sprints;

    @OneToMany(mappedBy = "project")
    List<Epic> epics;

    @OneToMany(mappedBy = "project")
    List<Story> stories;

    public Project(Long id, String projectName, String description) {
        Id = id;
        this.projectName = projectName;
        this.description = description;
    }
}

这是我的目标类:

@Data
@AllArgsConstructor
public class ProjectDTO {
    private Long Id;
    private String projectName;
    private String description;
}
@Mapper
public interface ProjectMapper extends Mapper {

    ProjectMapper INSTANCE = Mappers.getMapper(ProjectMapper.class)

    ProjectDTO projectToProjectDTO(Project project);
}
@Mapping(source=“sprints”, target= null)

任何帮助都将不胜感激!

共有1个答案

华欣荣
2023-03-14

还添加'@noargconstructor'。MapStruct还不能处理通过构造函数构造对象的问题。另一个选择是使用'@builder'代替,如果您的对象确实是不可变的

 类似资料:
  • 我正在学习如何使用Mybatis。老实说,我很喜欢这个框架。它很容易使用,我对它很满意,因为我可以使用它的sql命令:)我使用MyBatis 3.4.2和PostgreSQL数据库。 例如,我喜欢在插入之前使用注释执行查询是多么容易。如果我在接口方法之前添加一些注释,那么数据映射就像一个迷人的例子,比如:。 我不喜欢的(我希望你能把我引向正确的方向)有以下几点: 使用JDBC时,我需要做到以下几点

  • 问题内容: 我正在使用MapStruct库映射对象,但出现此错误: 无法将属性“ java.util.Date aDate”映射到“ javax.xml.bind.JAXBElement ADATE”。考虑声明/实现一个映射方法:“ javax.xml.bind.JAXBElement map(java.util.Date value)”。 我的问题:应该在哪里取消此映射方法? 问题答案: 我通过

  • 例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?

  • 我想使用另一个映射器中的一个映射器,并且这两个映射器都使用相同的签名实现相同的方法,因此我得到了“mapping Property的mapping methods found for mapping property” 我已经尝试在接口上实现共享方法,然后在两个映射器上扩展接口,但问题仍然存在 我想我需要使用某种限定词。我在谷歌和官方文档中搜索,但我不知道如何应用这项技术

  • 有没有一种方法可以忽略使用mapstruct在此代码示例中第三种方法的映射器的生成?

  • 几个小时以来,我一直在努力让MapStruct为JAXB生成的类生成有效的映射器。这些类的特殊性在于,它们既没有集合的setter,也没有集合的adder。例如: 类avove有一个getter和一个属性设置器(本例中为firstName),但对于集合(此处列出),它只有一个getter。因此,消费者有责任通过getAddressTypes(add(new AddressType(...))进行访