使用命名参数的hibernate查询没有结果

时间:2017-01-20 17:07:29

标签: java spring hibernate

我在spring MVC中使用hibernate命名参数时遇到问题

Session session = sessionFactory.openSession();
    Query q = session.createQuery("from Users u where u.username = :name and u.password = :pass");
    q.setParameter("name", username);
    q.setParameter("pass", password);
    Users user = (Users) q.uniqueResult();

使用log4j时的输出是和打印用户

2017-01-20 22:34:17 TRACE BasicBinder:83 - binding parameter [1] as [VARCHAR] - "test"
2017-01-20 22:34:17 TRACE BasicBinder:83 - binding parameter [2] as [VARCHAR] - "test"

user =  null

当我使用查询时:

"from Users u where u.username = 'test' and u.password = 'test'"

我获得了用户值。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

根据basic-binder的休眠日志判断。您的变量usernamepassword包含两个双引号(在开头和结尾)。

查看调试器中的变量或尝试使用setParameter方法中的值进行硬编码。