<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "@DescriptionProperty Multiplos"]]></title>
		<link>http://www.neoframework.org/forum/posts/list/6.page</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "@DescriptionProperty Multiplos"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>@DescriptionProperty Multiplos</title>
				<description><![CDATA[ Oi Pessoal,


Eu tenho um caso aqui onde são varias tabelas que dependem de outras
para no fim formar o objeto final que eu quero....

Por exemplo, eu tenho a tabela Genero, Marca, Produto e ProdutoEmbalagem e Tipo de Embalagem, onde Produto tem Genero e Marca.... e o ProdutoEmbalagem tem Produto e Tipo de Embalagem.

Porém tanto Produto quanto ProdutoEmbalagem não tem um campo nome para colocar o @DescriptionProperty... tentei colocar em dois mas o Neo da Erro...

Tentei fazer uma junção com toString e também não foi....

Como que eu posso fazer isso?

Att.,
João Pedro
]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/563.page#1840</guid>
				<link>http://www.neoframework.org/forum/posts/list/563.page#1840</link>
				<pubDate><![CDATA[Thu, 6 Aug 2009 15:24:33]]> GMT</pubDate>
				<author><![CDATA[ joaopedro]]></author>
			</item>
			<item>
				<title>Re:@DescriptionProperty Multiplos</title>
				<description><![CDATA[ Olá joao tudo bom??

Nesse caso o melhor a fazer é um getter transiente que retorne a descricao do objeto e esse getter ser anotado com o descriptionproperty

Dessa forma:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@DescriptionProperty
@Transient
public String getDescricao&#40;&#41;{
    return produto.getGenero&#40;&#41; +" "+embalagem.getTipo&#40;&#41;; //coloque aqui as propriedades desejadas
}
</pre>
		</div>

O Neo sempre que rederizar um combobox por exemplo, irá fazer o menor select possível, isto é.. carregará o menor número de campos possível para ter eficiencia... Os campos sempre serão os campos anotados com @Id e @DescriptionProperty

Veja que estamos utilizando beans mapeados com ManyToOne no método anotado com @DescriptionProperty. Nao é possível o Neo saber quais sao as referencias utilizadas dentro do método, então ele não carregará os campos produto e embalagem... 
Mas voce pode informar ao neo que necessita desses campos para formar o description property utilizando o atributo usingFields da @DescriptionProperty

veja o exemplo:

<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@DescriptionProperty&#40;usingFields={"produto", "embalagem"}&#41;
@Transient
public String getDescricao&#40;&#41;{
    return produto.getGenero&#40;&#41; +" "+embalagem.getTipo&#40;&#41;; //coloque aqui as propriedades desejadas
}
</pre>
		</div>

Assim o neo continuará fazendo o select mais eficiente possível, e trará os objetos necessários....

Espero ter solucionado sua dúvida e que esteja gostando do framework

Qualquer dúvida.. basta perguntar no fórum

Até mais
]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/563.page#1841</guid>
				<link>http://www.neoframework.org/forum/posts/list/563.page#1841</link>
				<pubDate><![CDATA[Thu, 6 Aug 2009 21:26:12]]> GMT</pubDate>
				<author><![CDATA[ rogel.garcia]]></author>
			</item>
			<item>
				<title>Re:@DescriptionProperty Multiplos</title>
				<description><![CDATA[ Oi Rogel,

Obrigado pela rápida resposta... eu fiz o que me disse....
mas deu uns erros...

Eu fiz assim:

Produto:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@DescriptionProperty&#40;usingFields={"genero","marca"}&#41;
@Transient
public String getDescricao&#40;&#41;{
	return genero.getNome&#40;&#41;+" "+marca.getNome&#40;&#41;;
}
</pre>
		</div>

Embalagem:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@DescriptionProperty&#40;usingFields={"produto","tipo_embalagem"}&#41;
@Transient
public String getDescricao&#40;&#41; {		
	return produto.getDescricao&#40;&#41;+" "+tipo_embalagem.getNome&#40;&#41;;
}
</pre>
		</div>

Na tela de Cadastrar Embalagem que pega somente a Descrição do
Produto no Combobox aparece perfeitamente.....

Mas na tela de Listagem que já é a união do Produto com o Tipo de
Embalagem ele dá erro do Hibernate....

Invalid property 'descricao' of bean class [com.xxxxx.bean.produto]: Getter for property 'descricao' threw exception. LazyInitializationException: objeto da classe com.xxxxxx.bean.produto não inicializado; nested exception is java.lang.reflect.InvocationTargetException: null null could not initialize proxy - the owning Session was closed  

E essa Embalagem também possui um relacionamento com ele mesmo e deu isso aqui na coluna referente a esse relacionamento:

Invalid property 'descricao' of bean class [com.xxxxx.bean.produto_embalagem]: Getter for property 'descricao' threw exception. LazyInitializationException: objeto da classe com.xxxxx.bean.produto_embalagem não inicializado; nested exception is java.lang.reflect.InvocationTargetException: null null could not initialize proxy - the owning Session was closed  

Tem idéia do que pode ser?

Att.,
João Pedro]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/563.page#1842</guid>
				<link>http://www.neoframework.org/forum/posts/list/563.page#1842</link>
				<pubDate><![CDATA[Fri, 7 Aug 2009 10:38:19]]> GMT</pubDate>
				<author><![CDATA[ joaopedro]]></author>
			</item>
			<item>
				<title>Re:@DescriptionProperty Multiplos</title>
				<description><![CDATA[ Beleza joao....

Seguinte... nos combos o @DescriptionProperty vao funcionar pois o neo irá criar o select...

quando voce tem uma listagem por exemplo.. o select é voce quem monta... entao os dados já chegam prontos no jsp sem chance para o neo carregar..

nesse caso voce deve ir no DAO (ex.: EmbalagemDAO) e sobrescrever o método updateLisagemQuery..

vai ficar mais ou menos assim:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
public void updateListagemQuery&#40;Query query&#41; {
   query.leftOuterJoinFetch&#40;"embalagem.produto produto"&#41;
             .leftOuterJoinFetch&#40;"embalagem.tipo_embalagem tipo_embalagem"&#41;;
  
}
</pre>
		</div>

Assim o resultado irá trazer o produto e o tipo_embalagem...

Só uma dica... Renomeie seu campo para tipoEmbalagem ao invés de tipo_embalagem.. para seguir o padrao java de nomeclatura...


Se a duvida persistir é só postar aqui.. até mais]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/563.page#1843</guid>
				<link>http://www.neoframework.org/forum/posts/list/563.page#1843</link>
				<pubDate><![CDATA[Sun, 9 Aug 2009 22:05:39]]> GMT</pubDate>
				<author><![CDATA[ rogel.garcia]]></author>
			</item>
			<item>
				<title>Re:@DescriptionProperty Multiplos</title>
				<description><![CDATA[ Oi Rogel,

No produto funcionou sem problema....
eu pedi a Descrição na Listagem e apareceu....

Mas na Embalagem continua com erro de Proxy, 
como se não tivesse encontrado a sessão ou coisa do gênero.

Até simplifiquei a listagem pedindo só produto para simplificar
a consulta.... mas negativo....

Deu esse erro na Listagem da Embalagem
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
Invalid property 'descricao' of bean class &#91;com.xxxxx.bean.produto&#93;: Getter for property 'descricao' threw exception. LazyInitializationException: objeto da classe com.xxxxxx.bean.produto não inicializado; nested exception is java.lang.reflect.InvocationTargetException: null null could not initialize proxy - the owning Session was closed  
</pre>
		</div>

EmbalagemDao
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@Override
	public void updateListagemQuery&#40;QueryBuilder&lt;embalagem&gt; query, FiltroListagem _filtro&#41; {
		query.leftOuterJoinFetch&#40;"embalagem.produto produto"&#41;;
	}
</pre>
		</div>

ProdutoDao
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@Override
	public void updateListagemQuery&#40;QueryBuilder&lt;produto&gt; query, FiltroListagem _filtro&#41; {
		query.leftOuterJoinFetch&#40;"produto.marca marca"&#41;
		.leftOuterJoinFetch&#40;"produto.genero genero"&#41;;
	}
</pre>
		</div>

Para mim quando punha o DescriptionProperty ele fazia as consultas
e uniões, pois tanto que no exemplo de País, Estado e Cidade 
funciona sem problema....

Eu andei procurando algumas coisa no google e fala q eu tenho de
chamar a classe produto antes da embalagem.... mas eu não soube
como fazer....

Se puder me dar uma dica....

Agradeço desde já a atenção....

João Pedro]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/563.page#1844</guid>
				<link>http://www.neoframework.org/forum/posts/list/563.page#1844</link>
				<pubDate><![CDATA[Mon, 10 Aug 2009 10:56:40]]> GMT</pubDate>
				<author><![CDATA[ joaopedro]]></author>
			</item>
			<item>
				<title>Re:@DescriptionProperty Multiplos</title>
				<description><![CDATA[ Posta a sua tela de listagem que tá dando problema.. pra eu dar uma olhada..]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/563.page#1845</guid>
				<link>http://www.neoframework.org/forum/posts/list/563.page#1845</link>
				<pubDate><![CDATA[Thu, 13 Aug 2009 18:47:28]]> GMT</pubDate>
				<author><![CDATA[ rogel.garcia]]></author>
			</item>
	</channel>
</rss>
