Tente usar o construtor do seu DTO.
Declare um novo construtor
public TopProductDTO(String text, Integer count) {
this.text = text;
this.count = count;
}
Na sua consulta use o novo Construtor
@Query("SELECT new TopProductDTO(p.textToSearch, count(id))FROM Product p GROUP BY text_to_search ORDER BY counter DESC")
List<TopProductDTO> findTopProducts();
}
Use o nome totalmente qualificado de sua classe.