简体   繁体   中英

Hibernate error - QuerySyntaxException: administrator is not mapped error

full error message:

 11:49:51,896 INFO [stdout] (http-localhost-127.0.0.1-8080-1) javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: administrator is not mapped [SELECT ad FROM administrator ad WHERE ad.adminID='123' AND ad.Password='123'] 
@Stateless
public class ManageAdministrator implements ManageAdministratorRemote {
    @PersistenceContext(unitName = "JPADB")
    private EntityManager entityManager;    

    public ManageAdministrator() {
    }

    public Administrator createAdministrator(Administrator adminID )
    {
        entityManager.persist(adminID);
        System.out.println("Inside create administrator");
        entityManager.flush();
        return adminID;
    }

    public List retrieveAllAdministrators()
    {
        String q = "SELECT ad from " + Administrator.class.getName() + " ad";
        Query query = entityManager.createQuery(q);
        List administrators = (List) query.getResultList();
        return  administrators;
    }

    @Override
    public Administrator adminLogin(Administrator adminID) {
        try {
            String q ="SELECT ad FROM administrator ad WHERE ad.adminID='" 
                     + adminID.getAdminID() +"'"
                     + " AND ad.Password='"
                     + adminID.getPassword() +"'";

            Query query = entityManager.createQuery(q);
            query.setMaxResults(1);
            //query.setParameter("logInEmail", admin.getLogInEmail());
            System.out.println(q);
            return (Administrator) query.getSingleResult();
         } 
         catch(NoResultException e) 
         {
                return null;
         }
    }

    @Override
    public int stringToInt(String word) {
        // TODO Auto-generated method stub
        return 0;
    }

may I Know what is the cause of this error ?

Your entity class seems to be Administrator (with capital A at start) while in your query you use administrator (with lower case a at the start).JPA queries are case-sensitive.

Change this line of code:

String q ="SELECT ad FROM Administrator ad WHERE ad.adminID='"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM