java - 将字符串映射到类(MapStruct)时出现问题

标签 java spring hibernate spring-boot mapstruct

我不知道如何准确地映射它。我需要一个是 String,另一个是对象,所以不幸的是我不能让自己变得更容易。

我有一个 RqgisterRequest 类:

public class RegisterRequest {
    private String firstName;
    private String lastName;
    private String email;
    private String password;

    private Set<String> roles;

这是我的注册表 带有实例的方法

 @PostMapping("/register")
    public HttpEntity authenticate(@Valid @RequestBody RegisterRequest registerRequest) {

        // create new user account
        User user = UserMapper.INSTANCE.registerRequestoUser(registerRequest);

        etc..

这是我的用户DTO

@Data
@NoArgsConstructor
@AllArgsConstructor
public abstract class UserDTO extends BaseDTO {

    @JsonProperty("first_name")
    private String firstName;

    @JsonProperty("last_name")
    private String lastName;

    @JsonProperty("email")
    private String email;

    @JsonProperty("password")
    private String password;

    private Set<Role> roles;

    private Set<Appointment> appointments;

(我的用户实体是相同的)

这是我的 UserMapper 类:

     User registerRequestoUser(RegisterRequest registerRequest);

最后,我在尝试运行程序时遇到错误:错误:(20, 11) java: 无法将属性“java.util.Set Roles”映射到“java.util.Set Roles”。考虑声明/实现一个映射方法:“java.util.Set map(java.util.Set value)”。

我该如何解决这个问题?

最佳答案

由于MapStuct不知道如何将字符串映射到角色,因此您必须显式定义映射角色。将接口(interface)更改为抽象映射器类,即可实现对给定属性的具体映射。

@Mappings(value={ @Mapping(source="roles", target="roles", qualifiedByName="customRoleMapper")}
abstract User registerRequestoUser(RegisterRequest registerRequest);

然后实现映射器:

@Named(value = "customRoleMapper")
public List<Role> customRoleMapper(List<String> roles){
   //create a new role list where you instantiate a Role from every string  and put it into the new list, then return with the new list
}

关于java - 将字符串映射到类(MapStruct)时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61865478/

相关文章:

java - id key 的自定义包装

java - 为 @GenericGenerator 设置 allocationSize

java - 使用邻接矩阵进行深度优先搜索?

java - 如何在播放完毕后立即有效地关闭大量剪辑?

java - Spring mvc :resource not finding *. ico 文件

javascript - Spring MVC、CSS 和 JavaScript 无法正常工作

java - springSecurityFilterChain 正在创建异常

java - 获得无向图中所有节点组合对的最佳算法(需要提高时间复杂度)

java - Hibernate ManyToMany 方法抛出 'org.hibernate.LazyInitializationException' 异常

hibernate - DTO 到实体以及实体到 DTO