2012-06-22 14 views
7

W moim projekcie GAE Zacząłem JPA 1.0 i ten kod działał świetnie:klauzula FROM kwerendy ma klasy XXX ale nie alias

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); 

Ale teraz, kiedy pracuje z JPA 2.0 uzyskać:

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) 

Zmieniłem, aby działało z CriteriaQuery, ale kod jest nieczytelny i trochę brudny.

Każdy pomysł, jak naprawić ten wyjątek?

Odpowiedz

12

myślę, że trzeba zdefiniować alias dla klasy tak:

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

Proste jak ... to żenujące :). Dzięki – Rami

Powiązane problemy