Sql 如何解决where子句中的未知列

Sql 如何解决where子句中的未知列,sql,spring,hibernate,Sql,Spring,Hibernate,我对getByLogin方法有一个问题: @Override public User getUserByLogin(String username) { Session session = this.sessionFactory.openSession(); User user = (User) session.createQuery("FROM pl.edu.wszib.model.User WHERE use

我对getByLogin方法有一个问题:

@Override
    public User getUserByLogin(String username) {
        Session  session = this.sessionFactory.openSession();
        User user =
                (User) session.createQuery("FROM pl.edu.wszib.model.User WHERE username = " + username ).uniqueResult();
        session.close();
        System.out.println(user);
        return user;

    }
我想通过用户名获取用户,通过我获取: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:where子句中的未知列“konrad”

我的表格看起来像:

 <form action="/user"  th:object="${user}" method="post" id="login" class="input-group">
                <input type="text" class="input-field" placeholder="username" name="username" th:field="*{username}" th:errorClass="error"required>
                <span th:if="${#fields.hasErrors('username')}" th:errors="*{username}">Incorrect data</span>

                <button type="submit" class="submit-btn">Get your  profil</button>
            </form>
但我有第二种方法,通过id获取,它工作得很好,我通过id获取了这个方法的用户 这看起来像:

 @Override
    public User getUserById(int idUser) {
        Session  session = this.sessionFactory.openSession();
        User user =
                (User) session.createQuery("FROM pl.edu.wszib.model.User WHERE idUser = " + idUser ).uniqueResult();
        session.close();
        System.out.println(user);
        return user;

    }
我必须在我的数据库中找到一个用户,其中一个用户的用户名是konrad,但这种方法无法工作。
有人能解释为什么metod getBylogin不起作用吗?

未知列与字符串周围缺少的引号有关,因此字符串内容将作为列名计算

使用参数绑定可以避免这种情况:

    session.createQuery("FROM pl.edu.wszib.model.User WHERE username = :username" )
    .setParameter("username", username)
    .uniqueResult();

未知列与字符串周围缺少的引号相关,因此字符串内容将作为列名计算

使用参数绑定可以避免这种情况:

    session.createQuery("FROM pl.edu.wszib.model.User WHERE username = :username" )
    .setParameter("username", username)
    .uniqueResult();

请使用能解决问题的参数请使用能解决问题的参数