gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:40:56 26 4
gpt4 key购买 nike

我不知道如何准确地映射它。我需要一个是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com