diogorsouza 14 de fev. de 2013
[quote=pmlm]O teu problema não deve ter nada a ver com o left join mas sim com o teres três colunas com o mesmo nome.
Isso, ja tentei com o AS e não funcionou também!
da o seguinte erro:
INFO : FROM : SELECT i . id , pc . nome AS pc_nome , pl . nome AS pl_nome , pa . nome AS pa_nome , i . data , i . valor FROM itens_compras i left join clientes c on c . id = i . id_cliente left join pessoas pc on pc . id = c . id_pessoa join lojas l on l . id = i . id_loja join pessoas pl on pl . id = l . id_pessoa join agencias a on a . id = i . id_agencia join pessoas pa on pa . id = a . id_pessoa where i . valor > 0 order by i . data
GRAVE : br . com . ibasi . ishopp . business . BusinessException : javax . persistence . PersistenceException : org . hibernate . exception . SQLGrammarException : could not execute query
Alguma outra sugestão??
Vlw
diogorsouza 14 de fev. de 2013
public Lista listaPorFiltro ( Object filtro , Integer pagina , Boolean contem ) throws BusinessException {
ItemCompraFilter filter = ( ItemCompraFilter ) filtro ;
String sql = "SELECT i.id, pc.nome, pl.nome, pa.nome, i.data, i.valor FROM itens_compras i
left join clientes as c on c.id = i.id_cliente
left join pessoas as pc on pc.id = c.id_pessoa
join lojas as l on l.id = i.id_loja
join pessoas as pl on pl.id = l.id_pessoa
join agencias as a on a.id = i.id_agencia
join pessoas as pa on pa.id = a.id_pessoa
where i.valor > 0
order by i.data;
try {
query = createNativeQuery(sql);
montaPaginacao(query);
List<Object[]> relatorio = query.getResultList();
ItemCompraItem itemCompra;
List<ItemCompraItem> lista = new ArrayList<ItemCompraItem>();
for (Object[] o : relatorio) {
itemCompra = new ItemCompraItem();
itemCompra.setId((Integer) o[0]);
itemCompra.setCliente((String) o[1]);
itemCompra.setLoja((String) o[2]);
itemCompra.setAgencia((String) o[3]);
itemCompra.setData(Convert.dateToStr((Date) o[4]));
itemCompra.setValor((Double) o[5]);
lista.add(itemCompra);
}
return new Lista(lista);
} catch ...
Estou realizando alguns testes nessa consulta ainda não esta completa!
Ta na mão o código…
Obrigado!
diogorsouza 14 de fev. de 2013
pmlm:
E que erro dá assim como tens?
Os campos pl.nome e pa.nome vem com o mesmo dado do pc.nome
diogorsouza 15 de fev. de 2013
Eu nem consigo utilizar alias na nativeQuery (não me pergunte porque), se eu coloco em 1 campo funciona, agora se coloco em mais de um campo da o erro abaixo na linha em que pego o resultado!
SELECT i.id, pc.nome as pc_nome, pl.nome as pl_nome, pa.nome as pa_nome, i.data, i.valor FROM itens_compras i
join clientes c on c.id = i.id_cliente
join pessoas pc on pc.id = c.id_pessoa
join lojas l on l.id = i.id_loja
join pessoas pl on pl.id = l.id_pessoa
join agencias a on a.id = i.id_agencia
join pessoas pa on pa.id = a.id_pessoa
where i.valor > 0
order by i.data;
ERRO:
GRAVE : br . com . ibasi . ishopp . business . BusinessException : javax . persistence . PersistenceException : org . hibernate . exception . SQLGrammarException : could not execute query
Direto no banco o SQL roda normalmente!
Obrigado!
diogorsouza 15 de fev. de 2013
O erro completo:
GRAVE : br . com . ibasi . ishopp . business . BusinessException : javax . persistence . PersistenceException : org . hibernate . exception . SQLGrammarException : could not execute query
at br . com . ibasi . ishopp . business . service . impl . ItemCompraServiceImpl . listaPorFiltro ( ItemCompraServiceImpl . java : 1735 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 39 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 597 )
at org . glassfish . ejb . security . application . EJBSecurityManager . runMethod ( EJBSecurityManager . java : 1052 )
at org . glassfish . ejb . security . application . EJBSecurityManager . invoke ( EJBSecurityManager . java : 1124 )
at com . sun . ejb . containers . BaseContainer . invokeBeanMethod ( BaseContainer . java : 5388 )
at com . sun . ejb . EjbInvocation . invokeBeanMethod ( EjbInvocation . java : 619 )
at com . sun . ejb . containers . interceptors . AroundInvokeChainImpl . invokeNext ( InterceptorManager . java : 800 )
at com . sun . ejb . EjbInvocation . proceed ( EjbInvocation . java : 571 )
at com . sun . ejb . containers . interceptors . SystemInterceptorProxy . doAround ( SystemInterceptorProxy . java : 162 )
at com . sun . ejb . containers . interceptors . SystemInterceptorProxy . aroundInvoke ( SystemInterceptorProxy . java : 144 )
at sun . reflect . GeneratedMethodAccessor196 . invoke ( Unknown Source )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 597 )
at com . sun . ejb . containers . interceptors . AroundInvokeInterceptor . intercept ( InterceptorManager . java : 861 )
at com . sun . ejb . containers . interceptors . AroundInvokeChainImpl . invokeNext ( InterceptorManager . java : 800 )
at com . sun . ejb . containers . interceptors . InterceptorManager . intercept ( InterceptorManager . java : 370 )
at com . sun . ejb . containers . BaseContainer . __intercept ( BaseContainer . java : 5360 )
at com . sun . ejb . containers . BaseContainer . intercept ( BaseContainer . java : 5348 )
at com . sun . ejb . containers . EJBLocalObjectInvocationHandler . invoke ( EJBLocalObjectInvocationHandler . java : 214 )
at com . sun . ejb . containers . EJBLocalObjectInvocationHandlerDelegate . invoke ( EJBLocalObjectInvocationHandlerDelegate . java : 89 )
at $ Proxy759 . listaPorFiltro ( Unknown Source )
at br . com . ibasi . ishopp . client . mb . consulta . ItemCompraMB . busca ( ItemCompraMB . java : 91 )
at br . com . ibasi . ishopp . client . mb . ListingMB . paginaPrimeira ( ListingMB . java : 214 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 39 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 597 )
at javax . el . BeanELResolver . invokeMethod ( BeanELResolver . java : 779 )
at javax . el . BeanELResolver . invoke ( BeanELResolver . java : 528 )
at javax . el . CompositeELResolver . invoke ( CompositeELResolver . java : 257 )
at com . sun . el . parser . AstValue . invoke ( AstValue . java : 248 )
at com . sun . el . MethodExpressionImpl . invoke ( MethodExpressionImpl . java : 302 )
at com . sun . faces . facelets . el . TagMethodExpression . invoke ( TagMethodExpression . java : 105 )
at javax . faces . event . MethodExpressionActionListener . processAction ( MethodExpressionActionListener . java : 148 )
at javax . faces . event . ActionEvent . processListener ( ActionEvent . java : 88 )
at javax . faces . component . UIComponentBase . broadcast ( UIComponentBase . java : 769 )
at javax . faces . component . UICommand . broadcast ( UICommand . java : 300 )
at javax . faces . component . UIViewRoot . broadcastEvents ( UIViewRoot . java : 794 )
at javax . faces . component . UIViewRoot . processApplication ( UIViewRoot . java : 1259 )
at com . sun . faces . lifecycle . InvokeApplicationPhase . execute ( InvokeApplicationPhase . java : 81 )
at com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
at com . sun . faces . lifecycle . LifecycleImpl . execute ( LifecycleImpl . java : 118 )
at javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 593 )
at org . apache . catalina . core . StandardWrapper . service ( StandardWrapper . java : 1550 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 343 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 217 )
at org . primefaces . webapp . filter . FileUploadFilter . doFilter ( FileUploadFilter . java : 79 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 256 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 217 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 279 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 175 )
at org . apache . catalina . core . StandardPipeline . doInvoke ( StandardPipeline . java : 655 )
at org . apache . catalina . core . StandardPipeline . invoke ( StandardPipeline . java : 595 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 161 )
at org . apache . catalina . connector . CoyoteAdapter . doService ( CoyoteAdapter . java : 331 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 231 )
at com . sun . enterprise . v3 . services . impl . ContainerMapper $ AdapterCallable . call ( ContainerMapper . java : 317 )
at com . sun . enterprise . v3 . services . impl . ContainerMapper . service ( ContainerMapper . java : 195 )
at com . sun . grizzly . http . ProcessorTask . invokeAdapter ( ProcessorTask . java : 860 )
at com . sun . grizzly . http . ProcessorTask . doProcess ( ProcessorTask . java : 757 )
at com . sun . grizzly . http . ProcessorTask . process ( ProcessorTask . java : 1056 )
at com . sun . grizzly . http . DefaultProtocolFilter . execute ( DefaultProtocolFilter . java : 229 )
at com . sun . grizzly . DefaultProtocolChain . executeProtocolFilter ( DefaultProtocolChain . java : 137 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 104 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 90 )
at com . sun . grizzly . http . HttpProtocolChain . execute ( HttpProtocolChain . java : 79 )
at com . sun . grizzly . ProtocolChainContextTask . doCall ( ProtocolChainContextTask . java : 54 )
at com . sun . grizzly . SelectionKeyContextTask . call ( SelectionKeyContextTask . java : 59 )
at com . sun . grizzly . ContextTask . run ( ContextTask . java : 71 )
at com . sun . grizzly . util . AbstractThreadPool $ Worker . doWork ( AbstractThreadPool . java : 532 )
at com . sun . grizzly . util . AbstractThreadPool $ Worker . run ( AbstractThreadPool . java : 513 )
at java . lang . Thread . run ( Thread . java : 662 )
Caused by : javax . persistence . PersistenceException : org . hibernate . exception . SQLGrammarException : could not execute query
at org . hibernate . ejb . AbstractEntityManagerImpl . convert ( AbstractEntityManagerImpl . java : 1214 )
at org . hibernate . ejb . AbstractEntityManagerImpl . convert ( AbstractEntityManagerImpl . java : 1147 )
at org . hibernate . ejb . QueryImpl . getResultList ( QueryImpl . java : 255 )
at br . com . ibasi . ishopp . business . service . impl . ItemCompraServiceImpl . listaPorFiltro ( ItemCompraServiceImpl . java : 1718 )
... 74 more
Caused by : org . hibernate . exception . SQLGrammarException : could not execute query
at org . hibernate . exception . SQLStateConverter . convert ( SQLStateConverter . java : 92 )
at org . hibernate . exception . JDBCExceptionHelper . convert ( JDBCExceptionHelper . java : 66 )
at org . hibernate . loader . Loader . doList ( Loader . java : 2536 )
at org . hibernate . loader . Loader . listIgnoreQueryCache ( Loader . java : 2276 )
at org . hibernate . loader . Loader . list ( Loader . java : 2271 )
at org . hibernate . loader . custom . CustomLoader . list ( CustomLoader . java : 316 )
at org . hibernate . impl . SessionImpl . listCustomQuery ( SessionImpl . java : 1842 )
at org . hibernate . impl . AbstractSessionImpl . list ( AbstractSessionImpl . java : 165 )
at org . hibernate . impl . SQLQueryImpl . list ( SQLQueryImpl . java : 157 )
at org . hibernate . ejb . QueryImpl . getResultList ( QueryImpl . java : 246 )
... 75 more
Caused by : java . sql . SQLException : Column 'nome' not found .
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 1073 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 987 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 982 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 927 )
at com . mysql . jdbc . ResultSetImpl . findColumn ( ResultSetImpl . java : 1144 )
at com . mysql . jdbc . ResultSetImpl . getString ( ResultSetImpl . java : 5616 )
at com . sun . gjc . spi . base . ResultSetWrapper . getString ( ResultSetWrapper . java : 426 )
at org . hibernate . type . descriptor . sql . VarcharTypeDescriptor $ 2. doExtract ( VarcharTypeDescriptor . java : 61 )
at org . hibernate . type . descriptor . sql . BasicExtractor . extract ( BasicExtractor . java : 64 )
at org . hibernate . type . AbstractStandardBasicType . nullSafeGet ( AbstractStandardBasicType . java : 253 )
at org . hibernate . type . AbstractStandardBasicType . nullSafeGet ( AbstractStandardBasicType . java : 249 )
at org . hibernate . type . AbstractStandardBasicType . nullSafeGet ( AbstractStandardBasicType . java : 234 )
at org . hibernate . loader . custom . CustomLoader $ ScalarResultColumnProcessor . extract ( CustomLoader . java : 505 )
at org . hibernate . loader . custom . CustomLoader $ ResultRowProcessor . buildResultRow ( CustomLoader . java : 451 )
at org . hibernate . loader . custom . CustomLoader . getResultColumnOrRow ( CustomLoader . java : 348 )
at org . hibernate . loader . Loader . getRowFromResultSet ( Loader . java : 639 )
at org . hibernate . loader . Loader . doQuery ( Loader . java : 829 )
at org . hibernate . loader . Loader . doQueryAndInitializeNonLazyCollections ( Loader . java : 274 )
at org . hibernate . loader . Loader . doList ( Loader . java : 2533 )
... 82 more
Creio que ele não encontre a coluna nome!!
Vlw
diogorsouza 15 de fev. de 2013
Pois é, ta complicado…
Alguma idéia?
Vlw pela ajuda…
diogorsouza 27 de fev. de 2013
Acabei resolvendo criando um campo com o nome que eu precisava em cada tabela.
Se alguém achar um jeito melhor me avise!
Vlw pela ajuda!