我有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;
}
答案 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
。