Hibernate troca virgula (,) por sinal de soma (+)

3 respostas
andre_a_s

Senhores, algo muito estranho está acontecendo.
Temos um sistema rodando em Oracle e agora estamos usando SQL Server 2008, e a seguinte query está com problemas:

update ResourceI18n resi18n set resi18n.url = concat(REPLACE(substring(resi18n.url,1,16), :oldUrl, :newUrl),substring(resi18n.url,17)) where resi18n.url is not null and resi18n.url like '%/resources/novo/%'

Essa query quando executada pelo Hibernate, ficou assim:

update MMP_PO_I18N set URL=(REPLACE(substring(URL, 1, 16)+'/resources/novo/'+'/resources/novo232/')+substring(URL, 17)) where PO_TYPE='RESOURCE' and (URL is not null) and (URL like '%/resources/novo/%')

Vejam que na segunda linha, após o SUBSTRING, ele trocou a virgula pelo sinal de soma.
Sempre que executo, recebo a seguinte exception:

Não tenho idéia do que pode ser, nunca vi algo assim no Hibernate. Com Oracle, esse HQL rola 100%

Alguma idéia?

3 Respostas

mgarcia

cara… pelo q vi está td normal… o sinal de mais seria a concatenação do sql server…

andre_a_s

Fala mgarcia.

Não está normal não
Ele deveria traduzir assim:

Mas traduziu assim:

Ele não tem que concatenar, o método REPLACE recebe 3 parametros, o que ele está fazendo é concatenando o terceiro, com o segundo e com o primeiro, formando assim um unico parametro

L

pela exception parece problema com os parametros do metodo replace(),o que vem no paremetro url??
esta dando o replace corretamente em termo de posicoes?
t+.

Criado 9 de março de 2010
Ultima resposta 10 de mar. de 2010
Respostas 3
Participantes 3