Peguei esse erro sem querer hj:
Caused by: Exception [TOPLINK-6015] (Oracle TopLink Essentials - 2006.8 (Build 060829)): oracle.toplink.essentials.exceptions.QueryException
Exception Description: Invalid query key [codNegocio] in expression.
at oracle.toplink.essentials.exceptions.QueryException.invalidQueryKeyInExpression(QueryException.java:608)
at oracle.toplink.essentials.internal.expressions.QueryKeyExpression.validateNode(QueryKeyExpression.java:657)
at oracle.toplink.essentials.expressions.Expression.normalize(Expression.java:2542)
at oracle.toplink.essentials.internal.expressions.DataExpression.normalize(DataExpression.java:343)
at oracle.toplink.essentials.internal.expressions.QueryKeyExpression.normalize(QueryKeyExpression.java:440)
at oracle.toplink.essentials.internal.expressions.QueryKeyExpression.normalize(QueryKeyExpression.java:427)
at oracle.toplink.essentials.internal.expressions.SQLSelectStatement.normalize(SQLSelectStatement.java:1190)
at oracle.toplink.essentials.internal.queryframework.ExpressionQueryMechanism.buildReportQuerySelectStatement(ExpressionQueryMechanism.java:454)
at oracle.toplink.essentials.internal.queryframework.ExpressionQueryMechanism.buildReportQuerySelectStatement(ExpressionQueryMechanism.java:405)
at oracle.toplink.essentials.internal.queryframework.ExpressionQueryMechanism.prepareReportQuerySelectAllRows(ExpressionQueryMechanism.java:1319)
at oracle.toplink.essentials.queryframework.ReportQuery.prepareSelectAllRows(ReportQuery.java:988)
at oracle.toplink.essentials.queryframework.ReadAllQuery.prepare(ReadAllQuery.java:398)
at oracle.toplink.essentials.queryframework.ReportQuery.prepare(ReportQuery.java:904)
at oracle.toplink.essentials.queryframework.DatabaseQuery.checkPrepare(DatabaseQuery.java:387)
at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:469)
at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:587)
at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:677)
at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:731)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2218)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:937)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:909)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:346)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.getResultList(EJBQueryImpl.java:447)
at br.com.tokiomarine.seguradora.ssv.score.bean.dao.ScoreDAOBean.getControlesEndossoByDataEmissao(ScoreDAOBean.java:94)
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:585)
at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
at com.evermind.server.ejb.interceptor.system.SetContextActionInterceptor.invoke(SetContextActionInterceptor.java:44)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
… 31 more
O erro acontece nessa query. Rodo ela no OC4J 10.1.3.1.1, e com JPA/Toplink.
public static final String SELECT_CONTROLE_ENDOSSO =
"select new br.com.tokiomarine.seguradora.ssv.score.model.ScoreControleEndosso(e.codNegocio, o.codEndosso, o.codSituacaoNegocio, o.tipoAlteracaoItemSegurado, o.tipoEndosso) " +
"from ControleEndosso o, Endosso e " +
"where e.codEndosso = o.codEndosso " +
" and o.codSituacaoNegocio in ('END', 'CEN') " +
" and o.dataEmissaoEndosso = :data " +
" and o.tipoEndosso is not null " +
"group by e.codNegocio, o.codEndosso, o.codSituacaoNegocio, o.tipoAlteracaoItemSegurado, o.tipoEndosso";
Depois de um bom tempo procurando um solução, sem querer acabei achando… Na primeira condição do where "e.codEndosso =o.codEndosso " inverti para "o.codEndosso = e.codEndosso ".
Não entendi exatamente o porque do erro… mas funcionou.