Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > ERROR EN CONSULTA BD

bUENAS TARDES , ESTOY REALIZANDO UNA CONSULTA EN JPA 2.1 Y ME GENERA EL SIGUIENTE ERROR:
ava.lang.ClassCastException: org.eclipse.persistence.jpa.jpql.parser.NullExpression cannot be cast to org.eclipse.persistence.jpa.jpql.parser.IdentificationVariable.

¿ALGUNA IDEA ? hE ESTADO BUSCANDO Y NO DOY CON LA SOLUCION

GRACIAS

julio 4, 2015 | Unregistered Commenterer

Si pones el código donde se produce y la consulta que realizas será más fácil

Tienes un SUM en tu query???? quizás esto te sirva

http://blog.matthias-reining.com/jpa-jpql-group-by-and-sum--the-argument-must-be-numeric-/

julio 4, 2015 | Registered Commenterantuansoft

No tengo una suma. Tengo una relacion de muchos a muchos ProductoOferta

@NamedQuery(name="Ofertaproducto.findOfertaActual",
query="SELECT o.idProducto, of.fechaInicio FROM Ofertaproducto o join o.idOferta of WHERE of.fechaInicio<=CURRENT_DATE and of.fechaFin>=CURRENT_DATE")

Utilizo jpa2.1 eclipseLink. Soy novata en jpa, espero vuestras ideas. gracias

julio 4, 2015 | Unregistered Commenterer

Coloca todo el rastreo de pila. Es casi imposible que nos demos cuenta donde está el error sin prácticamente nada de información.

Saludos.

julio 6, 2015 | Unregistered CommenterGus Garsaky

Hola, el error se encuentra en la definición del NamedQuery. Intenta traer todos los atributos de la la entidad, solo debes de proyectar "o" en el select

SELECT o FROM Ofertaproducto o join o.idOferta of WHERE of.fechaInicio<=CURRENT_DATE and of.fechaFin>=CURRENT_DATE

y luego accedes a las demás propiedades mediante los getters de esa instancia que estas obteniendo.

julio 6, 2015 | Unregistered CommenterOscar Gutierrez

Hola lo he probado y me sigue dando error

javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse P
Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing [SELECT o FROM Ofertaproducto o join o.idOferta of WHERE of.fechaInicio<=CURRENT_DATE and of.fechaFin>=CURRENT_DATE].
[47, 49] The identification variable 'of' cannot be a reserved word.
[56, 58] The identification variable 'of' cannot be a reserved word.
[91, 93] The identification variable 'of' cannot be a reserved word.
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:820)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:760)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing [SELECT o FROM Ofertaproducto o join o.idOferta of WHERE of.fechaInicio<=CURRENT_DATE and of.fechaFin>=CURRENT_DATE].
[47, 49] The identification variable 'of' cannot be a reserved word.
[56, 58] The identification variable 'of' cannot be a reserved word.
[91, 93] The identification variable 'of' cannot be a reserved word.
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:334)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
at org.eclipse.persistence.internal.jpa.JPAQuery.processJPQLQuery(JPAQuery.java:221)
at org.eclipse.persistence.internal.jpa.JPAQuery.prepare(JPAQuery.java:182)
at org.eclipse.persistence.queries.DatabaseQuery.prepareInternal(DatabaseQuery.java:621)
at org.eclipse.persistence.internal.sessions.AbstractSession.processJPAQuery(AbstractSession.java:4309)
at org.eclipse.persistence.internal.sessions.AbstractSession.processJPAQueries(AbstractSession.java:4270)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:579)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:799)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:743)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:239)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685)

julio 6, 2015 | Unregistered Commenterer

Parece que la solución que te ha dado @OscarGutierrez ha funcionado porque el error que te está dando ahora es otro distinto. Ahora es:

The identification variable 'of' cannot be a reserved word.

Estás usando una palabra reservada del lenguaje de SQL para nombra a tu tabla, cambia "of por otra cosa y debería funcionar:

Por ejemplo:

SELECT o FROM Ofertaproducto o join o.idOferta ofer WHERE ofer.fechaInicio<=CURRENT_DATE and ofer.fechaFin>=CURRENT_DATE

julio 6, 2015 | Registered Commenterantuansoft

gracias ya no da error en la consulta

julio 6, 2015 | Unregistered Commenterer