java-到模型转换错误

时间:2017-03-07 13:15:54

标签: java spring maven

我有dto和模型图层。我希望将dto转换为模型层,就像这段代码一样。我如何解决这个错误?我有所有需要的getter和setter

模特/旅行课

    public Travel convert(TravelDTO dto) {
    this.setTravelID(dto.getTravelID());
    this.setTravelCost(dto.getTravelCost());
    this.setTravelStart(dto.getTravelStart());
    this.setTravelEnd(dto.getTravelEnd());
    this.setLocation(dto.getLocation());
    this.setTravelPurpose(dto.getTravelPurpose());
    this.setUser(new User().convert(dto.getUser()));
    return this;
}

dto / travelDTO课程

    public TravelDTO convert(Travel entity) {
    this.setTravelID(entity.getTravelID());
    this.setTravelCost(entity.getTravelCost());
    this.setTravelStart(entity.getTravelStart());
    this.setTravelEnd(entity.getTravelEnd());
    this.setLocation(entity.getLocation());
    this.setTravelPurpose(entity.getTravelPurpose());
    this.setUser(new UserDTO().convert(entity.getUser()));
    return this;
}

userDto / convert code

    public UserDTO convert(User entity) {
    this.setUserID(entity.getUserID());
    this.setFirstName(entity.getFirstName());
    this.setLastName(entity.getLastName());
    this.setManagerId(entity.getManagerId());
    this.setPassword(entity.getPassword());
    this.setRegNumber(entity.getRegNumber());
    this.setUserName(entity.getUserName());
    this.setDepartment(new DepartmentDTO().convert(entity.getDepartment()));
    this.setTravel(new TravelDTO().convert(entity.getTravel()));

    return this;
}

ERROR

3 个答案:

答案 0 :(得分:1)

错误消息解释了问题:)。它说entity.getUser()返回一个用户列表。但该方法接受一个User对象。

答案 1 :(得分:0)

问题是你的entity.getUser()正在返回List而你的UserDTO的convert方法需要单个User模型对象。

答案 2 :(得分:0)

从截图中我可以看到,UserDTO.convert方法接受User类型的参数,并且您尝试传递类型为List的参数。我想,可能的解决方案是让Travel.getUser()返回User而不是List。

<强>更新

您可以遍历用户列表,将每个用户转换为UserDTO,然后将其添加到集合中,然后将其作为参数传递给this.setUser。这样的事情:`

List<UserDTO> userDTOs = new ArrayList<>();
List<User> users = entity.getUser();
for (User user : users) { 
    UserDTO userDTO = new UserDTO.convert(user);
    userDTOs.add(userDTO);
} 
this.setUser(userDTOs); 

请注意您的TravelDTO课程有List<User> user字段。我猜,它应该是List<UserDTO> users