Java 将集合映射到另一个集合(使用模型映射器或任何其他方式)
Java map Set to another Set (Using Model Mapper or Any other way)
在我目前正在做的项目中,有一个项目class,
public class project {
private Integer projectId;
private String projectName;
//getters & Setters
}
此项目在用户 class
中用作 集合
public class User {
private Integer userId;
private Set<Project> projects;
//getters & Setters
}
我需要将此用户 class 映射到 UserDto。 UserDto 如下所示。
public class UserDto {
private Integer userId;
private Set<ProjectDto> projectDtos;
//getters & Setters
}
ProjectDto 也与项目相同 class。
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;
}
返回以下错误:
failed to convert org.hibernate.collection.internal.PersistentSet to
java.util.Set
如果你能为此支持我,那就太好了。也欢迎不使用 ModelMapper 的答案。
提前致谢!
先给ProjectDto添加一个构造函数class:
public class ProjectDto {
private Integer projectId;
private String projectName;
public ProjectDto(Integer projectId, String projectName) {
this.projectId = projectId;
this.projectName = projectName;
}
//getters & Setters
}
然后用java 8流API,可以这样做:
private UserDto map(User user) {
UserDto userDto = new UserDto();
userDto.setUserId(user.getUserId());
userDto.setProjects(user.getProjects().stream()
.map(project -> new ProjectDto(project.getProjectId(), project.getProjectName()))
.collect(Collectors.toSet()));
return userDto;
}
在我目前正在做的项目中,有一个项目class,
public class project {
private Integer projectId;
private String projectName;
//getters & Setters
}
此项目在用户 class
中用作 集合public class User {
private Integer userId;
private Set<Project> projects;
//getters & Setters
}
我需要将此用户 class 映射到 UserDto。 UserDto 如下所示。
public class UserDto {
private Integer userId;
private Set<ProjectDto> projectDtos;
//getters & Setters
}
ProjectDto 也与项目相同 class。
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;
}
返回以下错误:
failed to convert org.hibernate.collection.internal.PersistentSet to java.util.Set
如果你能为此支持我,那就太好了。也欢迎不使用 ModelMapper 的答案。 提前致谢!
先给ProjectDto添加一个构造函数class:
public class ProjectDto {
private Integer projectId;
private String projectName;
public ProjectDto(Integer projectId, String projectName) {
this.projectId = projectId;
this.projectName = projectName;
}
//getters & Setters
}
然后用java 8流API,可以这样做:
private UserDto map(User user) {
UserDto userDto = new UserDto();
userDto.setUserId(user.getUserId());
userDto.setProjects(user.getProjects().stream()
.map(project -> new ProjectDto(project.getProjectId(), project.getProjectName()))
.collect(Collectors.toSet()));
return userDto;
}