开发者社区> 问答> 正文

求帮忙 Hibernate查询疑问

在做“新增用户”时要判断新增的“用户名”在数据库中是否已经存在,我现在碰到的情况如下:

当输入用户名为“1”时,失去焦点时进行判断,判断结果正确,下面问题来了:

上图中的两条记录是我新增的,当我再次输入用户名为“eason”进行新增时得到的判断结果让人奔溃,请问各位大侠这是咋回事,怎么破?

关于判断用户名是否已存在的主要程序如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
boolean isExistFlag=false;
String userName=request.getParameter("username");
String userId=request.getParameter("id");
if(userId==null||userId.trim().equals("")){
    isExistFlag=dao.isExistUsername(userName,"0");
}else{
    isExistFlag=dao.isExistUsername(userName,userId);
}
PrintWriter out=response.getWriter();
if(isExistFlag)
    out.write("exist");
}else{
 out.write("not");
}
 out.close();

}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public boolean isExistUsername(String userName,String userId)

{
    Session session = sessionFactory.openSession();
    try
    {
        Transaction tx = session.beginTransaction();
         
        String hql ="";
        List<HtUser> users=null;
        if(userId!=null&&userId.trim().equals("0")){
            hql = new StringBuffer()
                        .append(" from HtUser u ")
                        .append(" where u.username=? ")
                        .append(" and u.isuse='1' ")
                        .toString();
            users= session.createQuery(hql)
                                .setString(0, userName)
                                .list();
            if(users!=null&&users.size()>0){
                return true;
            }
        }
        if(userId!=null&&!userId.trim().equals("0")){
            hql = new StringBuffer()
                        .append(" from HtUser u ")
                        .append(" where u.username=? ")
                        .append(" and u.id!=? ")
                        .append(" and u.isuse='1' ")
                        .toString();
            users= session.createQuery(hql)
                                .setString(0, userName)
                                .setString(1, userId)
                                .list();
            if(users!=null&&users.size()>0){
                return true;
            }
        }
        tx.commit();
        session.close();
    }
    catch (HibernateException e)
    {
        session.getTransaction().rollback();
    }
    finally
    {
        if (session.isOpen())
        {
            session.close();
        }
    }
    return false;
}

}

展开
收起
爵霸 2016-02-29 17:29:07 2285 0
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载