Lucas, em qual versão é possivel usar o método recursive ?
Comigo não funcionou.
Para receber eu uso o include e ele faz automatico, existe alguma forma de automatizar ao salvar?
hoje crio 2 objetos, classe1.inpu1, classe2.input1, e seto a classe 2 na classe1 antes de salvar.
Obrigado!
L
Lucas_Cavalcanti
a partir do 3.1.1 ou 3.1.2… algum problema migrar pra 3.2.0?
não entendi o que vc quer dizer com automatizar ao salvar
abraços
F
Fmgasparino
Lucas Cavalcanti:
a partir do 3.1.1 ou 3.1.2… algum problema migrar pra 3.2.0?
não entendi o que vc quer dizer com automatizar ao salvar
abraços
Lucas, estou correndo com este trabalho, meu TCC (EE técnico) tem prazo para 1 semana, meu grupo não consegue me ajudar, esta completo na minha mão. Preciso termina-lo em 1 semana. Pretendo segui mais para frente com ele, entao posso migrar, nao quero correr o risco…
Quanto a automatização, era somente colocar classe.classe1.atributo. É tao intuitivo… =)
valeu
R
RafaelViana
Lucas Cavalcanti:
ou se vc não tiver relacionamentos bidirecionais vc pode fazer:
E se eu tenho relacionamentos bidirecionais. O que posso fazer para evitar a referencia circular?
L
Lucas_Cavalcanti
vc vai precisar excluir um dos atributos (principalmente o que referencia a classe inicial)
R
RafaelViana
Estou fazendo a busca recursiva no JSON num objeto da Classe A.
Preciso manter na hierarquia do arquivo somente a descrição da ClasseB (não preciso de nenhum outro campo da ClasseB... inclusive é um deles que causa a referencia circular...)
Tenho como fazer um include em somente um dos campos da outra classe?
//Hoje está assim
result.use(json()).withoutRoot().from(listaDaClasseA).recursive().serialize();
//Tenho como fazer isso? (não consegui)
result.use(json()).withoutRoot().from(listaDaClasseA).include("classeB.descricao").recursive().serialize();
Segue classes abaixo:
publicclassClasseA{@ManyToOne(optional=false)@JoinColumn(name="classeB")privateClasseBclasseB;}publicclassClasseB{//só preciso deste campo da classe BprivateStringdescricao="...";//Aqui está a referencia circular... nao preciso desse campo no JSON@OneToMany(mappedBy="classeB",fetch=FetchType.EAGER)privateList<ClasseC>lista;}
No System.out.println esta printando o nome da série das turmas (o campo não está nulo)
L
Lucas_Cavalcanti
vc tá com uma versão atual do VRaptor? tipo 3.4.0 ou 3.4.1?
R
RafaelViana
Versão 3.4.0 aqui, vou tentar atualizar para 3.4.1
R
RafaelViana
Valeu!!! Funcionou agora.
Esse problema nunca ia conseguir achar =)
L
Lucas_Cavalcanti
=)
tematéumtestegarantindoisso:<asideclass="oneboxgithubblob"> <header class="source"> <a href="https://github.com/caelum/vraptor/blob/master/vraptor-core/src/test/java/br/com/caelum/vraptor/serialization/xstream/XStreamXMLSerializationTest.java#L197" target="_blank">github.com</a></header><articleclass="onebox-body"> <h4><a href="https://github.com/caelum/vraptor/blob/master/vraptor-core/src/test/java/br/com/caelum/vraptor/serialization/xstream/XStreamXMLSerializationTest.java#L197" target="_blank">caelum/vraptor/blob/master/vraptor-core/src/test/java/br/com/caelum/vraptor/serialization/xstream/XStreamXMLSerializationTest.java#L197</a></h4><preclass="onebox"><code class="lang-java"><ol class="startlines" start="187" style="counter-reset:li-counter186;"><li> @Test</li><li> public void shouldSerializeCollectionWithPrefixTag() {</li><li> String expectedResult = "<order>\n<price>15.0</price>\n<comments>packitnicely,please</comments>\n</order>\n";</li><li> expectedResult += expectedResult;</li><li> expectedResult = "<orders>\n" + expectedResult + "</orders>";</li><li> Order order = new Order(new Client("guilhermesilveira"), 15.0, "packitnicely,please");</li><li> serialization.from(Arrays.asList(order, order), "orders").serialize();</li><li> assertThat(result(), is(equalTo(expectedResult)));</li><li> }</li><li> @Test</li><li class="selected"> public void shouldIncludeFieldsFromACollection() {</li><li> Order order = new Order(new Client("guilhermesilveira"), 15.0, "packitnicely,please",</li><li> new Item("name", 12.99));</li><li> serialization.from(Arrays.asList(order, order), "orders").include("items").serialize();</li><li></li><li> assertThat(result(), containsString("<items>"));</li><li> assertThat(result(), containsString("<name>name</name>"));</li><li> assertThat(result(), containsString("<price>12.99</price>"));</li><li> assertThat(result(), containsString("</items>"));</li><li> }</li><li> </li></ol>
(a lógica do xml é a mesma do json)
R
RafaelViana
Legal! Nem lembrei de olhar os testes do projeto… Eu havia visto em alguns tópicos de usar include, mas aqui não estava funcionando de nenhuma maneira.
Agora, finalmente, consegui “entrar de cabeça” no VRaptor. Estamos iniciando todos os novos projetos com ele, e migrando alguns dos antigos =)
Muito bom o framework!