Caused by: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Error compiling the query [select t from Utilisateur t where LOGIN='' and PASSWORD=''], line 1, column 34: unknown identification variable [login]. The FROM clause of the query does not declare an identification variable [login].
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1477)
at ejbservice.GestionUtulisateur.authentification(GestionUtulisateur.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
我的错误是什么,请帮助我,这是我的方法
public boolean authentification(String login, String password) {
String a = "select t from Utilisateur t where LOGIN='"+login+"' and PASSWORD='"+password+"'";
EntityManagerFactory emf = Persistence.createEntityManagerFactory("ProjetPU");
EntityManager em = emf.createEntityManager();
Query query = em.createQuery(a);
List <Utilisateur> Loaded = query.getResultList();
if ((Loaded.size())==0 ){
return false ;
} else {
return true;
}
}
答案 0 :(得分:1)
语法不正确。假设您的Utilisateur.java
实际上具有名为LOGIN
和PASSWORD
的属性,您将使用如下的JPQL表达式:
select t from Utilisateur t where t.LOGIN='...' and t.PASSWORD='...'
我猜。但这些对我来说似乎是表列名(因为将属性声明为小写的惯例)。检查您是否没有将列与属性混合。
答案 1 :(得分:0)
您正在使用JPQL查询,因此您应该使用setParameter来传递参数: 试试这个:
String a = "select t from Utilisateur t where LOGIN= :loginParam and PASSWORD= :passwordParam";
Query query = em.createQuery(a);
...
query.setParameter("loginParam",login);
query.setParameter("passwordParam",password);
List <Utilisateur> Loaded = query.getResultList();
...