Sql 如何解决where子句中的未知列
我对getByLogin方法有一个问题: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
@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();
请使用能解决问题的参数请使用能解决问题的参数