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"),
不知道,但你爲什麼要保持'DATE'功能,如果你已經通過日期值? – SJuan76
第一個是測試,因爲在這些日期之後會捕獲並保留變量'fechaInicioSeleccionada,fechaFinalSeleccionada'。 –
請不要混淆JSF和JPA。這只是JPA。 – BalusC