添加新的@NameQuery自定义时创建EntityManager时出错

时间:2013-08-31 16:35:37

标签: hibernate jpa persistence entitymanager

我正在使用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.fechaFinalSeleccionadaDate

类型时

当我运行应用程序时,我收到下一条消息:

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

1 个答案:

答案 0 :(得分:0)

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