7

私のGAEプロジェクトでは、JPA 1.0から始めましたが、このコードはうまく機能しました:

    Query query = em.createQuery("SELECT FROM MyImage " +
                                 "WHERE m_Email = :email " +
                                 "And m_Password = :password ", MyImage.class);
    query.setParameter("email", email);
    query.setParameter("password", password);

しかし、JPA 2.0 を使用するようになったので、次のようになります。

FROM clause of query has class util.MyImage but no alias
org.datanucleus.store.query.QueryCompilerSyntaxException: FROM clause of query has class util.MyImage but no alias
at org.datanucleus.query.compiler.JavaQueryCompiler.compileFrom(JavaQueryCompiler.java:233)
at org.datanucleus.query.compiler.JPQLCompiler.compile(JPQLCompiler.java:79)
at org.datanucleus.store.query.AbstractJPQLQuery.compileInternal(AbstractJPQLQuery.java:269)
at org.datanucleus.store.query.Query.setImplicitParameter(Query.java:825)
at org.datanucleus.api.jpa.JPAQuery.setParameter(JPAQuery.java:458)
at org.datanucleus.api.jpa.JPAQuery.setParameter(JPAQuery.java:57)
at dataBase.DataBase.getMyImageFromDB(DataBase.java:173)

私はそれを CriteriaQuery で動作させることができましたが、コードは判読できず、少し面倒です。

この例外を修正する方法はありますか?

4

1 に答える 1

12

次のようにクラスのエイリアスを定義する必要があると思います。

Query query = em.createQuery("SELECT i FROM MyImage i " + 
                             "WHERE i.m_Email = :email " + 
                             "And i.m_Password = :password ", MyImage.class);
于 2012-06-22T12:36:10.017 に答える