Tenho uma classe de itens e outra de nota fiscal. Acontece que quando quero alterar a nota fiscal, ao invés de somente atualizar os seus itens, está sendo salvando novamente todos eles ao invés de atualizar.
Exemplo: Salvei dois itens na minha nota fiscal e desejo alterar a quantidade. Quando atualizo esta sendo inserida novamente a lista com os mesmos dois itens com a alteração ao invés de atualizar.
Minha classe nota:
@Entity(name = "Nota")
@Table(name = "nota")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Nota {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id_cliente")
    private Cliente cliente;
    @JsonManagedReference
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "nota", cascade = CascadeType.ALL)
    private List<Itens> itens;
    private Integer numero;
    private Date data;
    private BigDecimal valor_total;
Minha classe itens:
@Entity(name = "Itens")
@Table(name = "itens")
public class Itens {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id_produto")
    private Produto produto;
    @JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    private Nota nota;
    private Integer ordenacao;
    private BigDecimal quantidade;
    private BigDecimal valor_total;
Meu método de atualizar os itens:
   public void atualizar(NotaDTO dto) {
        Nota nota = repository.getReferenceById(dto.getId());
        if (!repository.existsById(dto.getId())) {
            throw new ValidacaoException("A nota fiscal informada não existe.");
        } else {
            int ordenacao = itensRepository.findByUltimaOrdencao(nota);
            BigDecimal somaTotal = BigDecimal.ZERO;
            for (Itens item : dto.getItens()) {
                item.setOrdenacao(ordenacao++);
                Long valorUnitario = produtoRepository.findByValorUnitarioProduto(item.getProduto().getId());
                item.setValor_total(item.getQuantidade().multiply(BigDecimal.valueOf(valorUnitario)));
                somaTotal = somaTotal.add(item.getValor_total());
                item.setNota(nota);
            }
            nota.setValor_total(somaTotal);
            nota.atualizar(dto);
        }
    }
Dentro da classe nota o método atualizar:
public void atualizar(NotaDTO dto) {
        if (dto.getCliente() != null) {
            this.cliente = new Cliente(new ClienteDTO());
        }
        if (dto.getItens() != null) {
            this.itens = dto.getItens();
        }
        if (dto.getData() != null) {
            this.data = dto.getData();
        }
        if (dto.getValor_total() != null) {
            this.valor_total = dto.getValor_total();
        }
    }
Alguém poderia me explicar o porque disto estar acontecendo?
 
             
            