简体   繁体   English

MapStruct 地图集<Dto>设置<Enum>

[英]MapStruct map Set<Dto> to Set<Enum>

I want to convert UserDto to User我想将 UserDto 转换为 User

UserDto:用户名:

public class UserDto {
   private String username;
   private String password;
   private Set<RoleDto> roles;
   //getters and setters
}

RoleDto:作用:

public class RoleDto {
   private String name;
   //getters and setters
}

User:用户:

public class User {
   private String username;
   private String password;
   private Set<Role>;
   //getters and setters
}

Role:角色:

public enum Role {
   private String name;
   //getters
}

My mapper class:我的映射器类:

@Mapper(componentModel = "spring")
public interface UserMapper {
    UserDto toDto(User user);
    User fromDto(UserDto userDto); //error here
}

But after maven install i had problem:但是在maven install我遇到了问题:

Error: java: Role does not have an accessible parameterless constructor.

Because Role is enum, I can't create public constructor.因为 Role 是枚举,所以我无法创建公共构造函数。 I tried use:我尝试使用:

@Mapping(source = "roles", targer = "roles")
User fromDto(UserDto userDto);

And

@Mapping(source = "userDto.roles", targer = "user.roles")
User fromDto(UserDto userDto);

But it had no effect.但它没有效果。 How can i fix it?我该如何解决?

I took the advice of @Rup and modified my Role class to:我接受了@Rup 的建议并将我的 Role 类修改为:

public class Role {
   private String name;
   // getters and setters
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM