Oi Danilo, tudo bem?
Desculpe a demora em retornar.
Na situação em que existem diferentes versões da classe "Order" no mesmo pacote, mas com campos diferentes, o deserializador não conseguirá identificar automaticamente qual classe utilizar apenas com o nome como referência.
Uma solução para esse problema é utilizar um mecanismo de versionamento da classe, como adicionar um campo de versão na classe "Order" que indique qual é a versão atual. Dessa forma, o deserializador pode verificar esse campo de versão e utilizar a classe correta para a desserialização.
Por exemplo, suponha que temos duas versões da classe "Order": "OrderV1" e "OrderV2". Podemos adicionar um campo "version" na classe "Order" que indique a versão atual. Quando o deserializador encontrar um objeto "Order" para desserializar, ele pode verificar o valor do campo "version" e utilizar a classe correspondente.
public class Order {
private String version;
// outros campos
// getters e setters
}
Assim, quando você enviar um objeto "Order" para ser desserializado, você pode definir o campo "version" com o valor correspondente à versão da classe que você está utilizando.
Espero ter ajudado.
Um abraço e bons estudos.