【发布时间】:2011-11-09 06:09:13
【问题描述】:
我使用 JPQL 查询编写了一个简单的登录系统,它总是不返回任何结果:
public boolean check(String name, String password) {
final String qstring="SELECT e FROM Muser e WHERE e.name = '"+name+"'";
Muser user;
try{
user = em.createQuery(qstring, Muser.class).getSingleResult();
}
catch(NoResultException e){
return false;
}
return password.equals(user.getPassword());
}
当我将其更改为原生查询时:
user = (Muser) em.createNativeQuery(qstring, Muser.class).getSingleResult();
或一个 int 表达式:
final String qstring="SELECT e FROM Muser e WHERE e.id = "+id;
一切顺利。有什么问题?谢谢一百万!
【问题讨论】:
-
不要以明文形式存储密码:散列它们。一定要在其中创建参数的查询:使用参数(以避免代码注入)。
标签: string jpa comparison equals jpql