quinta-feira, 7 de outubro de 2010

[java-br] Problem SQLNative do Hibernate

·

 

Bom dia pessoal

Estamos enfrentando um problema aqui. Tenho uma entidade(classe ItemPesquisa, persistido em 1 schema) que possui associação com um objeto (produto) persistido em mais de um "schema" de banco de dados.
Para resolver isso, criamos um método com uma consulta SQL, onde eu indico de qual schema o produto deve vir.

Mas, o que acontece é que, no código abaixo, quando busco o ItemPesquisa e seus dados (código, por exemplo), e coloco uma entidade no Transform, o valor do ItemPesquisa.código está sobreescrevendo o valor do Produto.código.

Alguém tem uma luz, pra resolver isso? Ou sabe como eu poderia usar 2 schemas em uma mesma Criteria?

Segue trecho do código:

public List<ItemPesquisa> buscarItensPesquisa(Long codigoRepresentante ,OpcoesPesquisa opcoesPesquisa, String schema){

StringBuilder sql = new StringBuilder()
.append(" SELECT ")
.append(" item_pesquisa.codigo, item_pesquisa.ranking, item_pesquisa.comentario , ")
.append(" "+ schema +".produtos.*,")
.append(" pesquisa.* ")
.append(" FROM ")
.append(" item_pesquisa ")
.append(" INNER JOIN ")
.append(" "+ schema +".produtos on item_pesquisa.produto = "+ schema +".produtos.codigo ")
.append(" INNER JOIN ")
.append(" pesquisa on item_pesquisa.pesquisa = pesquisa.codigo ")
.append(" INNER JOIN ")
.append(" "+ schema +".representantes on pesquisa.representante = "+ schema +".representantes.codigo ")
.append(" WHERE ")
.append(" pesquisa.representante = "+ codigoRepresentante +" ")
.append(" AND ")
.append(" pesquisa.opcoes_pesquisa = "+ opcoesPesquisa.ordinal() +" ")
.append(" ORDER BY item_pesquisa.ranking ")
;

SQLQuery query = ComandoUtil.getSession(schema).createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ItemPesquisa.class));

query.addScalar("codigo",Hibernate.LONG)
.addScalar("ranking", Hibernate.LONG)
.addEntity(Pesquisa.class)
.addEntity(Produto.class)
.addScalar("comentario",Hibernate.STRING)
;

.addScalar("pesquisa", Hibernate.entity(Pesquisa.class))
.addScalar("produto", Hibernate.entity(Produto.class))

Fabiano Santos de Oliveira
Internet e Desenvolvimento
Departamento de TI
Tel. +55 44 3351 5014 | Cel. 55 44 9915 0429
e-mail | fabiano@morenarosa.com.br
site | http://www.grupomorenarosa.com.br
[cid:image003.jpg@01CB6607.F3646BC0]

Antes de Imprimir, Pense em seu compromisso com o Meio-Ambiente

Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor, avise imediatamente o remetente, respondendo o e-mail, e em seguida apague-o. Agradecemos sua cooperação.

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog