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.