VRaptor + json + obj.OneToMany

falaei pessoal, estou precisando de uma ajuda nessa combinação do assunto.

Estou tentando trazer uma lista de telefone de PessoaFisica para exibir. Eu consigo trazer os atributos de PessoaFisica de forma tranquila, mas a lista de telefone não estou conseguindo.

tenho a seguinte situação:

  
    public class Pessoa {

            @OneToMany
            private List<Telefone> telefones;
            
       //     getters and setters
           
    }

    public class PessoaFisica extends Pessoa {
           
          private String nome;
          private String cpf;

    }

    public class FuncionarioFisico extends Funcionario {

            @ManyToOne
            private PessoaFisica pessoaFisica;
            
       //     getters and setters
           
    }

  public class Telefone {

            @ManyToOne
            private Pessoa pessoa;

            private String descricao;
            
       //     getters and setters
           
    }

tenho minha busca json da seguinte forma:


	@Override
	@Get("/login/buscarJson.json")
	public void buscarJson(String q) {
		// TODO Auto-generated method stub
		
		log.info("BUSCA JSON: " + q);
		List<FuncionarioFisico> funcionarioFisicos = null;
		if (q.length() > 13) {
			funcionarioFisicos = funcionarioFisicoBusinessFacade.consulta(q, "cpf");
		}
		if (!Valida.isEmpty(funcionarioFisicos)) {
			result.use(json()).withoutRoot().from(funcionarioFisicos).include("pessoaFisica")
			                                                         .include("cargo")
			                                                         .include("pessoaFisica.telefone") // acho que pode ser neste trecho
			                                                         .serialize();	
		}
	}

na hora de formatar pra exibir:


 $("#nome").html(funcionario.pessoaFisica.nome);                                         
 $("#cargo").html(funcionario.cargo.descricao);
 $("#telefone").html(funcionario.pessoaFisica.telefone[0].descricao); // tento desta forma, mas o objeto não existe

se alguém puder dar uma moral ficarei agradecido! abraços.

o .recursive() não funciona pra vc?

estou utilizando vraptor 3.4.1

tentei dessas formas e em ambas me estorou erro:


result.use(json()).withoutRoot().from(funcionarioFisicos).include("pessoaFisica")
                                                                     .include("pessoaFisica.telefone").recursive()
			                                                         .include("cargo")
			                                                         .serialize();

result.use(json()).withoutRoot().from(funcionarioFisicos).include("pessoaFisica").recursive()
                                                                     .include("pessoaFisica.telefone")
			                                                         .include("cargo")
			                                                         .serialize();

erro


br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: com.thoughtworks.xstream.core.TreeMarshaller$CircularReferenceException: 

Tente usar o recursive, mas retire os includes que colocou. O recursive faz os includes ‘automaticamente’.

use o recursive e dê um exclude na propriedade que tá dando referencia circular (deve ter no meio da stacktrace)

pow pessoal, desculpe-me pela demora, mas só estou tendo tempo agora.

obrigado pela ajuda! fiz da seguinte forma:


result.use(json()).withoutRoot().from(funcionarioFisicos)
                                             .include("pessoaFisica")
			                     .include("pessoaFisica.telefone")
			                     .exclude("pessoaFisica.telefone.pessoa")
                                             .include("cargo")
			                     .serialize();	

só falta agora descobrir como pôr o tópico como resolvido rrssss…