2013-08-31 31 views
0

我與JPA工作,我有實體,我想customezed與此查詢NameQuery:錯誤創建的EntityManager當我添加一個新的@NameQuery customezed

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

WHE我運行應用程序,我得到一個消息:

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!

SOLUTION

正確@NameQuery:

@NamedQuery(name = "ArchivoConvenio.findByPeriodo", query = "SELECT a FROM ArchivoConvenio a WHERE a.fechaYHoraFinProceso BETWEEN :INICIO AND :FIN"), 
+1

不知道,但你爲什麼要保持'DATE'功能,如果你已經通過日期值? – SJuan76

+0

第一個是測試,因爲在這些日期之後會捕獲並保留變量'fechaInicioSeleccionada,fechaFinalSeleccionada'。 –

+0

請不要混淆JSF和JPA。這只是JPA。 – BalusC

回答

0

你的實體有根據本JpaGenericController<ArchivoConvenio>名稱ArchivoConvenio
但在命名查詢中,您有archivoConvenio
嘗試,因爲它是區分大小寫的將其更改爲ArchivoConvenio

相關問題