I'm working with JPA and I've Entity and I want to customezed a NameQuery with this query:
SELECT * FROM archivoConvenio
WHERE fechaYHoraFinProceso BETWEEN DATE('2013-07-01') AND DATE('2013-07-31')
So The @NameQuery is :
@NamedQuery(name = "ArchivoConvenio.findByPeriodo", query = "SELECT a FROM archivoConvenio a WHERE a.fechaYHoraFinProceso BETWEEN DATE(:inicio) AND DATE(:fin)"),
I try to get the Information the following way:
But now I make a test:
JpaGenericController<ArchivoConvenio> DAOAC = new JpaGenericController<ArchivoConvenio>(ArchivoConvenio.class);
List<ArchivoConvenio > list = new List<ArchivoConvenio >();
list =(DAOAC.findQuery( "ArchivoConvenio.findByPeriodo",new String[]{"inicio","fin"},
"2013-07-01","2013-07-31"
));
Because after these dates will capture and keep the variables It should be:
list =(DAOAC.findQuery( "ArchivoConvenio.findByPeriodo",new String[]{"inicio","fin"},
this.fechaInicioSeleccionada,this.fechaFinalSeleccionada
));
When this.fechaInicioSeleccionada,this.fechaFinalSeleccionada
are the type Date
Whe I run the application I get next message:
Caused by: org.hibernate.HibernateException: Errors in named queries: ArchivoConvenio.findByPeriodo
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:426)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
... 45 more
So,I suppose that :
I'm doing bad the @Namequery
I'm doing bad send the query parameters to findQuery
So,someone help me?
What do I'm doing wrong?
How to fix this mistake?
Thaks!.
SOLUTION
The correct @NameQuery:
@NamedQuery(name = "ArchivoConvenio.findByPeriodo", query = "SELECT a FROM ArchivoConvenio a WHERE a.fechaYHoraFinProceso BETWEEN :INICIO AND :FIN"),