XStream e Super Class Field

3 respostas
hesenger

Estou tendo problemas com a serialização do XStream. Na verdade não sei se é um problema ou uma
falta de entendimento de minha parte, mas encontrei em vários locais na internet que os campos da
super classe deveriam ser serializados, e no meu caso isso não ocorre.

Veja o seguinte exemplo:

public class Entity {
	private Long id;
	
	public Long getId() {
		return id;
	}
}
public class User extends Entity {
	private String name;
	
	public String getName() {
		return name;
	}
}

No caso acima quando serializo uma instância da classe user apenas o campo name é
serializado, o campo id não, ficando assim:

<user>
  <name>Nome do usuário</name>
</user>

Alguém já teve este problema? Alguem sabe como fazer o que quero?

3 Respostas

igor_jua

Cara, já tive o mesmo problema…
Minha solução foi bem simples…
Não trabalhei com herança!
Creio que para montar uma estrutura xml, vc não pode ter heranca…

ex:

Jose Chico netinho
public class neto{
String neto1;

}

public class Pai{
String filho1;
String filho2;
Neto neto1;

}

O que vc pode fazer, é mudar o nome das tags com o método alias do XStream ou setar valores dentro dela com o useatribut se eu não me engano.
8)

hesenger

Obrigado Igor.

Realmente parece ser um problema. No meu caso eu tentei forçar ele a procurar os fields
usando o método alias ou mesmo o useAttribute. Se eu desistir da herança e repetir os
campos em todas as entidades do meu domínio isso vai dificultar um pouco todos
meu trabalho além de aumentar o código. Vou continuar procurando uma solução e qualquer
coisa posto aqui. Se alguém souber avise, de qualquer forma valeu!

hesenger

Na verdade eu estava enganado, o XStream escreve os campos que estão nas classes superiores, mas como
ele sempre tenta ser o mais enxuto possível ele não escrevia meu campo id pq este estava nulo… :oops:

Coisa de principiante mesmo… Valeu!!!

Criado 5 de novembro de 2009
Ultima resposta 5 de nov. de 2009
Respostas 3
Participantes 2