Foro sobre Java EE > ERROR EN CONSULTA BD
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-/
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
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.
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.
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)
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
gracias ya no da error en la consulta
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