Resolvendo desordenação
public class Utils {
//pegaremos a ordenação de projection (paginação) e montar uma nova lista de Product
//usando como a base a lista desordenada (entity)
public static List<Product> replace(List<ProductProjection> ordered, List<Product> unordered) {
//Usar Map, pois é mais fácil para acessar os itens.
//Long (para o id), guardaremos o product pelo ID.
Map<Long, Product> map = new HashMap<>();
//preenchendo o Map com os elementos da lista desordenada
for (Product p : unordered) {
map.put(p.getId(), p);
}
//criando lista de Produtos ordenada
List<Product> result = new ArrayList<Product>();
//agora, para cada Projection da ordered (lá em cima), iremos adicionar na result
//o produto que corresponde a Projection
for (ProductProjection p : ordered) {
//irá para a lista, o produto que o id estiver no map, que tenha o ID do
//objeto dentro da lista ordered
result.add(map.get(p.getId()));
}
return result;
}
}
Atualizado