0

私は 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"),
4

1 に答える 1

0

あなたのエンティティには、ArchivoConvenioこれに従って名前が付けられていJpaGenericController<ArchivoConvenio>ます。
しかし、名前付きクエリにはarchivoConvenio. 大文字と小文字が区別
されるため、に変更してみてください。ArchivoConvenio

于 2013-09-01T23:21:07.617 に答える