【发布时间】:2021-01-05 17:00:57
【问题描述】:
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>
我的控制器看起来:
@RequestMapping("/user")
public String user(Model model, User user, BindingResult bindingResult){
if(bindingResult.hasErrors()) {
return "user"; // powrót do formularza
}
User result = userDAO.getUserByLogin(user.getUsername());
model.addAttribute("result", result);
return "resultUser";
}
@GetMapping("/user")
public String userForm(User user) {
return "user";
}
但是我有第二种方法通过 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 不起作用吗?
【问题讨论】:
-
请使用参数,会解决的