kum*_*uda 5 java mysql hibernate
我有课程登录,有userId,username和password.
对于用户登录我检查username,并password和歌厅userId.如果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();
}
Run Code Online (Sandbox Code Playgroud)
1)您正在使用HQL,因此您需要了解您不能在HQL查询的投影中给出数据库中的列名
String hql = "select user_id from login where user_name= :username and
password= :password";
Run Code Online (Sandbox Code Playgroud)
在您的登录类中,您没有字段,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"
Run Code Online (Sandbox Code Playgroud)
这里的log是别名,就像我们在普通Java中所做的那样.
Login log=new Login()
log.userId
Run Code Online (Sandbox Code Playgroud)
小智 5
设置参数时尽量不要使用冒号。
query.setParameter("userName", login.getUserName());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47106 次 |
| 最近记录: |