0

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"),
4

1 回答 1

0

您的实体有一个ArchivoConvenio根据 this的名称JpaGenericController<ArchivoConvenio>
但是在命名查询中你有archivoConvenio.
尝试将其更改为,ArchivoConvenio因为它区分大小写。

于 2013-09-01T23:21:07.617 回答