<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Erro ao fazer update [RESOLVIDO]"]]></title>
		<link>http://www.neoframework.org/forum/posts/list/6.page</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Erro ao fazer update [RESOLVIDO]"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Erro ao fazer update [RESOLVIDO]</title>
				<description><![CDATA[ Bom dia pessoal.
Estou gostando mto de usar o Neo. Parabéns.

Estou tentando fazer update em uma tabela sem mto sucesso, entao gostaria de uma ajudinha de vcs.

Tenho o codigo
<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');">
String sql = "update LancCred lancCred 
inner join Conta conta on conta.con_id = lancCred.conta
set bloqueado = ?
where dataLanc &gt;= ? and dataLanc &lt;= ? and conta.con_usuario = ?";

getHibernateTemplate&#40;&#41;.bulkUpdate&#40;sql, new Object&#91;&#93; { bloqueado, dataInicial, dataFinal, usuario }&#41;; 
</pre>
		</div>

So que nao faz update, da a mensagem de erro: unexpected token inner
Se eu pegar a sentença e rodar no gerenciador do banco, faz o update nas colunas.

O que poderia estar errado??

Desde ja agradeço.]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/575.page#1887</guid>
				<link>http://www.neoframework.org/forum/posts/list/575.page#1887</link>
				<pubDate><![CDATA[Thu, 29 Oct 2009 11:41:29]]> GMT</pubDate>
				<author><![CDATA[ Tchaco]]></author>
			</item>
			<item>
				<title>Re:Erro ao fazer update</title>
				<description><![CDATA[ Bom dia,

Este erro ocorre porque o Hibernate tem uma limitação no update, você não pode fezer join em update e delete. Outro ponto que daria erro também é que, em joins no hibernate você não especifica a condição usando o "ON".

para fazer joind de Pessoa com endereço por exemplo seria apenas:

<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');">
from Pessoa p join p.endereco;
</pre>
		</div>

Esta consulta faria um inner join de Pessoa com Endereco usando corretamente a chave primária e a foreign key.

Se eu quisesse alterar todas as pessoas de um determinado bairro teria de fazer:

<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');">
update Pessoa p set p.preferencial = ? where p.endereco.id in &#40;select  e.id from Endereco e where e.bairro = ?&#41; 
</pre>
		</div>

Observe que o <i>p.endereco.id</i> e o <i>e.id</i> se refere a foreign key e a primary key respectivamente, o Hibernate usa o atributo <i>id</i> para referenciar a propriedade que possui a annotation @Id independente do seu nome real que poderia ser cdendereco ou idendereco ou até mesmo id.

Se não conseguir resolver sua consulta, por favor dê mais detalhes de suas classes, pois não dá pra saber de qual classe é cada propriedade em sua consulta e qual é o tipo de relacionamento.

Atenciosamente,
Giovane Freitas]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/575.page#1888</guid>
				<link>http://www.neoframework.org/forum/posts/list/575.page#1888</link>
				<pubDate><![CDATA[Thu, 29 Oct 2009 12:53:30]]> GMT</pubDate>
				<author><![CDATA[ giovanejfreitas]]></author>
			</item>
			<item>
				<title>Re:Erro ao fazer update</title>
				<description><![CDATA[ Olá Tchaco,

uma outra opção que voce teria, já que está utilizando uma query SQL do banco de dados é utilizar o método

<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');">getJdbcTemplate&#40;&#41;</pre>
		</div>

Com ele voce pode executar queries SQL diretamente no banco de dados, sem passar pelo hibernate.

Mas seria interessante <i>sempre que possível utilizar o hibernate para suas queries</i>, pois uma alteração no mapeamento, nao afetaria tanto as queries.]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/575.page#1890</guid>
				<link>http://www.neoframework.org/forum/posts/list/575.page#1890</link>
				<pubDate><![CDATA[Thu, 29 Oct 2009 13:50:01]]> GMT</pubDate>
				<author><![CDATA[ rogel.garcia]]></author>
			</item>
			<item>
				<title>Re:Erro ao fazer update</title>
				<description><![CDATA[ Fiz igual ao seu exemplo e deu certo.

<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');">
String sql = "update LancCred lancCred set lancCred.bloqueado = ? where lancCred.dataLanc &gt;= ? and lancCred.dataLanc &lt;= ? and lancCred.conta.id in &#40;select conta.id from Conta conta where conta.usuario = ?&#41;";

getHibernateTemplate&#40;&#41;.bulkUpdate&#40;sql, new Object&#91;&#93; { status, dataIni, dataFim, usuario }&#41;;
</pre>
		</div>

Valeu, obrigado.]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/575.page#1891</guid>
				<link>http://www.neoframework.org/forum/posts/list/575.page#1891</link>
				<pubDate><![CDATA[Thu, 29 Oct 2009 13:50:28]]> GMT</pubDate>
				<author><![CDATA[ Tchaco]]></author>
			</item>
			<item>
				<title>Re:Erro ao fazer update [RESOLVIDO]</title>
				<description><![CDATA[ Para usar o getJdbcTemplate() é preciso ter uma atenção especial, pois poderá executar o comando em uma transação separada. Recomendo o uso de NamedQueries para executar comandos que devem obrigatoriamente ser escritos em SQL puro, pois as named queries são executadas pelo hibernate e logo ficam dentro da mesma transação quando se faz o uso do TransactionTemplate.]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/575.page#1892</guid>
				<link>http://www.neoframework.org/forum/posts/list/575.page#1892</link>
				<pubDate><![CDATA[Thu, 29 Oct 2009 16:00:30]]> GMT</pubDate>
				<author><![CDATA[ giovanejfreitas]]></author>
			</item>
			<item>
				<title>Re:Erro ao fazer update [RESOLVIDO]</title>
				<description><![CDATA[ Olá pessoal,

    parabens pelo framework !!

    Sou Analista da Unipampa onde utilizamos o GEPLANES e agora estou realizando testes com o NEOFRAMEWORK para adota-lo nas aplicações desta universidade.

    Duvida,  quando clico no botao Salvar no exemplo TesteNeo, em algum momento entre o formbean está perdendo o id da pessoa.
    No metodo doSalvar da CrudController, o objeto form está vindo com o cdusuario = null.  Alguem de vcs poderiam me informar o que pode estar acontecendo ? ou onde o FORMBEAN é setado.


public ModelAndView doSalvar(WebRequestContext request, FORMBEAN form) throws CrudException {
		BEAN bean = null;
		try {
			bean = formToBean(form);
			salvar(request, bean);
		} catch (Exception e) {
			throw new CrudException(SALVAR, e);
		}
		return getSalvarModelAndView(request, bean);
	}

Abração a todos]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/575.page#2107</guid>
				<link>http://www.neoframework.org/forum/posts/list/575.page#2107</link>
				<pubDate><![CDATA[Thu, 20 Oct 2011 15:52:52]]> GMT</pubDate>
				<author><![CDATA[ robson_goncalves]]></author>
			</item>
	</channel>
</rss>
