GOW
domingo, 18 de janeiro de 2026
COMPARE LISTS IN JAVA
1️⃣ Criar sets de idSubitem
Set<Long> idsBanco = listaManutencaoItem.stream()
.map(ItemSubitemVO::getIdSubitem)
.collect(Collectors.toSet());
Set<Long> idsRequest = retornoManutencaoRequestVO.getManutencaoRetornoItensVO()
.stream()
.map(ManutencaoRetornoItemVO::getIdSubitem)
.collect(Collectors.toSet());
➕ Novos registros (inserir)
List<ManutencaoRetornoItemVO> novos = retornoManutencaoRequestVO.getManutencaoRetornoItensVO()
.stream()
.filter(vo -> !idsBanco.contains(vo.getIdSubitem()))
.collect(Collectors.toList());
➖ Removidos (excluir do banco)
List<ItemSubitemVO> removidos = listaManutencaoItem.stream()
.filter(vo -> !idsRequest.contains(vo.getIdSubitem()))
.collect(Collectors.toList());
🔄 Persistindo
for (ManutencaoRetornoItemVO vo : novos) {
manutencaoRetornoItemRepository.save(
ManutencaoRetornoItem.builder()
.manutencaoRetornoItemPK(new ManutencaoRetornoItemPK(idManutencao, vo.getIdSubitem()))
.numeroNotaFiscal(vo.getNumeroNotaFiscal())
.valorNotaFiscal(vo.getValorNotaFiscal())
.build()
);
}
Remover
for (ItemSubitemVO vo : removidos) {
manutencaoRetornoItemRepository.deleteByManutencaoIdAndSubitemId(idManutencao, vo.getIdSubitem());
}
EXAMPLE NATIVE QUERY SPRING JPA - DELETE
@Modifying
@Transactional
@Query(
value = "DELETE FROM loja.tb_item " +
"WHERE id = :id " +
"AND id_loja = :idLoja",
nativeQuery = true
)
void deleteByManutencaoIdAndSubitemId(
@Param("id") Long id,
@Param("idLOja") Long idLoja
);
Assinar:
Postagens (Atom)