我有班级登录,其中有userId
, username
and password
.
对于要登录的用户,我正在检查username
and password
并得到userId
.
If userId
不为零则它将引导至主页。我正在尝试在休眠状态下执行此操作。但我的查询不起作用
public int userLogin(Login login)
throws MySQLIntegrityConstraintViolationException, SQLException,
Exception {
Session session = HibernateUtil.getSessionFactory().openSession();
int userId = 0;
try {
session.beginTransaction();
String hql = "Select log.userId from Login log where log.userName=:userName
and log.password=:password";
System.out.println(hql);
Query query = session.createQuery(hql);
query.setParameter(":userName", login.getUserName());
query.setParameter(":password", login.getPassword());
List result = query.list();
System.out.println("resultset:"+result);
Iterator iterator = result.iterator();
while(iterator.hasNext()){
userId = (int) iterator.next();
}
} catch (HibernateException e) {
if (session.getTransaction() != null) {
session.getTransaction().rollback();
}
} finally {
session.close();
}
1)您正在使用HQL,因此您需要了解您不能在HQL查询的投影中给出数据库中的列名
String hql = "select user_id from login where user_name= :username and
password= :password";
在您的登录类中,您没有字段user_id
你给了user_id
进入预测。
HQL 将类与数据库映射,因此 Login 类将登录表,而 userId 字段将是数据库中的 user_id 列。并且您编写的是普通 SQL 查询而不是 HQL 查询。
请使用此 HQL 查询。
String hql="Select log.userId from Login log where log.username=:username and log.password=:password"
这里的 log 是别名,就像我们在普通 Java 中所做的那样。
Login log=new Login()
log.userId
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)