@rafael_moreira1 escreveu:
Eu tentei fazer a query uasndo expression constructors e jpql , mas o jpql não eceita subqueryes e estou , então tentando fazer com nativeQuery .
Estou recebendo mensagem de erro. Alguém saberia porquê?
A query é a seguinte :
StringBuilder jpql = new StringBuilder();
jpql.append("select a2.codigoProduto , a2.descricao, a2.quantidade_recente, Soma ,a2.valor, a2.valor * Soma
from")
.append("(select p.codigoProduto, sum(p.quantidade_recente) Soma from Produto p ,Usuario u ")
.append("where u.codigo = p.codigo_filial and u.codigo_chefe = 3 ) as a1,")
.append(" (SELECT p1.codigoProduto, p1.descricao, p1.quantidade_recente , p1.valor from Produto aS p1, Usuario u ")
.append("where u.codigo = p1.codigo_filial and u.codigo_chefe = 3 ) as a2 ")
.append("where a2.codigoProduto = a1.codigoProduto");// metodo buscarPorPaginacao Query query = manager.createNativeQuery(jpql.toString(), Filtro.class); // query.setParameter("codigo", 3L); @SuppressWarnings("unchecked") List<Filtro> resultado = query.getResultList(); for (Filtro prod : resultado) { System.out.println(" Impressão Filtro da Empresa: "); System.out.println(" CodigoProduto : " + prod.getCodigoProduto() + " Produto " + prod.getDescricao() + " Quantidade " + prod.getQuantidade() + " Total " + prod.getSoma() + " Receita " + prod.getReceita() ); }
A query que sai no console é a seguinte :
select
a2.codigoProduto ,
a2.descricao,
a2.quantidade_recente,
Soma ,
a2.valor,
a2.valor * Soma
from
(select
p.codigoProduto,
sum(p.quantidade_recente) Soma
from
Produto p ,
Usuario u
where
u.codigo = p.codigo_filial
and u.codigo_chefe = 3 ) as a1,
(SELECT
p1.codigoProduto,
p1.descricao,
p1.quantidade_recente ,
p1.valor
from
Produto aS p1,
Usuario u
where
u.codigo = p1.codigo_filial
and u.codigo_chefe = 3 ) as a2
where
a2.codigoProduto = a1.codigoProduto
Ela é executada no mysql e retorna resultados corretamente , mas na classe que estou testando ocorre o seguinte erro:Caused by: java.sql.SQLException: Column 'codigo' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1064)
at com.mysql.jdbc.ResultSetImpl.getLong(ResultSetImpl.java:2743)
at com.mchange.v2.c3p0.impl.NewProxyResultSet.getLong(NewProxyResultSet.java:2478)
at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$2.doExtract(BigIntTypeDescriptor.java:74)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338)
at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:785)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:721)
at org.hibernate.loader.Loader.processResultSet(Loader.java:953)
at org.hibernate.loader.Loader.doQuery(Loader.java:921)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
at org.hibernate.loader.Loader.doList(Loader.java:2554)
... 10 more
Mensagens: 1
Participantes: 1