我正在使用JPA和我的实体,我想用这个查询来定制一个NameQuery:
SELECT * FROM archivoConvenio
WHERE fechaYHoraFinProceso BETWEEN DATE('2013-07-01') AND DATE('2013-07-31')
所以@NameQuery是:
@NamedQuery(name = "ArchivoConvenio.findByPeriodo", query = "SELECT a FROM archivoConvenio a WHERE a.fechaYHoraFinProceso BETWEEN DATE(:inicio) AND DATE(:fin)"),
我尝试以下列方式获取信息:
但现在我做了一个测试:
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"
));
因为在这些日期之后将捕获并保留变量它应该是:
list =(DAOAC.findQuery( "ArchivoConvenio.findByPeriodo",new String[]{"inicio","fin"},
this.fechaInicioSeleccionada,this.fechaFinalSeleccionada
));
当this.fechaInicioSeleccionada,this.fechaFinalSeleccionada
是Date
当我运行应用程序时,我收到下一条消息:
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
所以,我认为:
我做坏了@Namequery
我做错了将查询参数发送到findQuery
那么,有人帮助我吗?
我做错了什么?
如何解决这个错误?
Thaks!
解
正确的@NameQuery:
@NamedQuery(name = "ArchivoConvenio.findByPeriodo", query = "SELECT a FROM ArchivoConvenio a WHERE a.fechaYHoraFinProceso BETWEEN :INICIO AND :FIN"),
答案 0 :(得分:0)
根据此ArchivoConvenio
,您的实体名称为JpaGenericController<ArchivoConvenio>
但在命名查询中,您有archivoConvenio
尝试将其更改为ArchivoConvenio
,因为它区分大小写。