私は JPA を使用しており、Entity を使用しており、次のクエリで 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に送信するのが悪い
それで、誰か私を助けて?
私は何を間違っていますか?
この間違いを修正するには?
ありがとう!
解決
正しい @NameQuery:
@NamedQuery(name = "ArchivoConvenio.findByPeriodo", query = "SELECT a FROM ArchivoConvenio a WHERE a.fechaYHoraFinProceso BETWEEN :INICIO AND :FIN"),