ciao!

allora, ho fatto un pò di modifiche:
codice:
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;


import java.sql.Timestamp;


@Setter
@Getter
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"dataOraInizio", "dataOraFine", "minLvaorate"})
public class Timesheet {
  Integer idTimeSheet;
  Timestamp dataOraInizio;
  Timestamp dataOraFine;
  Integer minLvaorate;
}
poi:
codice:
@Override
  public CheckTimesheet checkTimesheets(int idProgetto, String sendEmail) {
    MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource();
    mapSqlParameterSource.addValue("id", idProgetto);


    String queryOld = "SELECT * FROM Timesheet WHERE (codProgetto > 888 AND codProgetto < 932)";
    List<Timesheet> listOld = jdbcTemplate.query(
        queryOld,
        mapSqlParameterSource,
        (rs, rowNum) -> new Timesheet(
            rs.getInt("idTimeSheet"),
            rs.getTimestamp("DataOraInizio"),
            rs.getTimestamp("DataOraFine"),
            rs.getInt("MinLavorate")
        )
    );


    String queryNew = "SELECT * FROM timesheets " +
        "WHERE (cod_sede_progetto > 888 AND cod_sede_progetto < 932) " +
        "AND cancellato = 0";
    List<Timesheet> listNew = mysqlTemplate.query(
        queryNew,
        mapSqlParameterSource,
        (rs, rowNum) -> new Timesheet(
            rs.getInt("id_timesheet_old"),
            null,
            null,
            0
        )
    );


    List<Timesheet> listMerged = new ArrayList<>();
    listMerged.addAll(listOld);
    listMerged.addAll(listNew);


    Set<Timesheet> s = new HashSet<>(listMerged);
    List<Timesheet> list = new ArrayList<>(s);


    System.out.println("VECCHIO: " + listOld.size());
    System.out.println("NUOVO: " + listNew.size());
    System.out.println("TOTALE: " + listMerged.size());
    System.out.println("FINALE: " + list.size());


    return new CheckTimesheet(listOld.size(), listNew.size(), list);
  }
ma mi ritorna dei dati assurdi:
codice:
VECCHIO: 7295
NUOVO: 6472
TOTALE: 13767
FINALE: 7299
quello che non riesco a capire, e che ovviamente non dipende da voi, è se è sbagliata la logica/codice, oppure è un problema di dati.
ma penso sia più un problema di dati, visto che se li simulo mettendoli a mano funziona tutto correttamente.