Hibernate错误 - QuerySyntaxException:管理员未映射错误

时间:2015-07-02 06:37:18

标签: java eclipse

完整的错误消息:

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

我可以知道这个错误的原因是什么?

1 个答案:

答案 0 :(得分:3)

您的实体类似乎是管理员(在开始时使用大写A),而在您的查询中,您使用管理员(在开始时使用小写a).JPA查询区分大小写。

更改此行代码:

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