【发布时间】:2020-09-11 07:24:04
【问题描述】:
在我目前正在做的项目中,有一个 Project 类,
public class project {
private Integer projectId;
private String projectName;
//getters & Setters
}
此项目在用户类中用作 Set
public class User {
private Integer userId;
private Set<Project> projects;
//getters & Setters
}
我需要将此 User 类映射到 UserDto。 UserDto 如下所示。
public class UserDto {
private Integer userId;
private Set<ProjectDto> projectDtos;
//getters & Setters
}
ProjectDto 也与 Project 类相同。
public class projectDto {
private Integer projectId;
private String projectName;
//getters & Setters
}
为了映射 User 和 UseDto,我尝试了下面的代码。但它给出了一个错误。
private UserDto map(User user) {
UserDto userDto = new UserDto();
userDto.setUserId(user.getUserId());
Set<ProjectDto> projectDto= new HashSet<>();
Type setType = new TypeToken<HashSet<ProjectDto>>(){}.getType();
projectDto = modelMapper.map(user.getProjects(), setType);
userDto.setProjectDto(projectDto);
return userDto;
}
返回以下错误:
未能将 org.hibernate.collection.internal.PersistentSet 转换为 java.util.Set
如果你能支持我,那就太好了。也欢迎不使用 ModelMapper 的答案。 提前致谢!
【问题讨论】:
-
首先您必须从 user.getProject() 设置 ProjectDTO 对象,例如新的 ProjectDTO(project.get...);添加它 setOfProjectDto,然后添加到 userDto.setProjectDto(setOfProjectDto)。如果您需要完整代码,请告诉我。
-
“setProjectDto”方法中的逻辑是什么?
-
@SanuraHettiarachchi 没有任何逻辑。只是设置对象。
-
类型 setType = new TypeToken
>(){}.getType();你可以尝试使用集合而不是 HashSet 吗? -
@HiteshKumar 好的。和邱舟给出的答案一样吧?有效!非常感谢!!
标签: java set hashset modelmapper