使用 Java 8 将列表分组以列出 DTO
Group List to List DTO using Java 8
我想使用 JAVA 将 DTO 中的 InscricaoTipoTrabalhoAvaliador
列表按相等 AvaliadorEvento
进行分组 8. 有人可以帮忙吗?
银行查询returns 4行,其中ID 10和ID 13相同AvaliadorEventoId
,我想将它们分组在DTO中:
InscricaoTipoTrabalhoAvaliador
@Entity
@Table(name = "inscricao_tipo_trab_aval")
@Getter
@Setter
public class InscricaoTipoTrabalhoAvaliador implements Entidade{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="inscricao_tipo_trabalho_id")
private InscricaoTipoTrabalho inscricaoTipoTrabalho;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "avaliador_evento_id")
private AvaliadorEvento avaliadorEvento;
@Enumerated(EnumType.STRING)
@Column(name = "situacao_avaliador")
private SituacaoTrabalho situacaoTrabalho;
@Transient
private List<InscricaoTipoTrabalho> inscricaoTipoTrabalhos = new ArrayList<InscricaoTipoTrabalho>();
public InscricaoTipoTrabalhoAvaliador() {
super();
}
}
InscricaoTipoTrabalhoAvaliadorDTO
@Getter
@Setter
@AllArgsConstructor
public class InscricaoTipoTrabalhoAvaliadorDTO {
private AvaliadorEvento avaliadorEvento;
private List<InscricaoTipoTrabalhoAvaliador> trabalhos;
}
假设 List<InscricaoTipoTrabalhoAvaliador> jobs
,以下应该有效:
Map<AvaliadorEvento, List<InscricaoTipoTrabalhoAvaliador>> grouped =
jobs.stream().collect(Collectors.groupingBy(InscricaoTipoTrabalhoAvaliador::getAvaliadorEvento));
假设您有一个同时使用 AvaliadorEvento
和 List<InscricaoTipoTrabalhoAvaliador>
的构造函数,您可以使用此映射轻松创建 InscricaoTipoTrabalhoAvaliadorDTO
:
List<InscricaoTipoTrabalhoAvaliadorDTO> dtos = grouped.entrySet().stream()
.map(entry -> new InscricaoTipoTrabalhoAvaliadorDTO(entry.getKey(), entry.getValue()))
.collect(Collectors.toList());
我想使用 JAVA 将 DTO 中的 InscricaoTipoTrabalhoAvaliador
列表按相等 AvaliadorEvento
进行分组 8. 有人可以帮忙吗?
银行查询returns 4行,其中ID 10和ID 13相同AvaliadorEventoId
,我想将它们分组在DTO中:
InscricaoTipoTrabalhoAvaliador
@Entity
@Table(name = "inscricao_tipo_trab_aval")
@Getter
@Setter
public class InscricaoTipoTrabalhoAvaliador implements Entidade{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="inscricao_tipo_trabalho_id")
private InscricaoTipoTrabalho inscricaoTipoTrabalho;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "avaliador_evento_id")
private AvaliadorEvento avaliadorEvento;
@Enumerated(EnumType.STRING)
@Column(name = "situacao_avaliador")
private SituacaoTrabalho situacaoTrabalho;
@Transient
private List<InscricaoTipoTrabalho> inscricaoTipoTrabalhos = new ArrayList<InscricaoTipoTrabalho>();
public InscricaoTipoTrabalhoAvaliador() {
super();
}
}
InscricaoTipoTrabalhoAvaliadorDTO
@Getter
@Setter
@AllArgsConstructor
public class InscricaoTipoTrabalhoAvaliadorDTO {
private AvaliadorEvento avaliadorEvento;
private List<InscricaoTipoTrabalhoAvaliador> trabalhos;
}
假设 List<InscricaoTipoTrabalhoAvaliador> jobs
,以下应该有效:
Map<AvaliadorEvento, List<InscricaoTipoTrabalhoAvaliador>> grouped =
jobs.stream().collect(Collectors.groupingBy(InscricaoTipoTrabalhoAvaliador::getAvaliadorEvento));
假设您有一个同时使用 AvaliadorEvento
和 List<InscricaoTipoTrabalhoAvaliador>
的构造函数,您可以使用此映射轻松创建 InscricaoTipoTrabalhoAvaliadorDTO
:
List<InscricaoTipoTrabalhoAvaliadorDTO> dtos = grouped.entrySet().stream()
.map(entry -> new InscricaoTipoTrabalhoAvaliadorDTO(entry.getKey(), entry.getValue()))
.collect(Collectors.toList());