【发布时间】:2016-07-15 09:32:16
【问题描述】:
当我调用 createQuery(String, Class) 时,应用程序挂起。 Hibernate 的最后一个 INFO 是“使用 ASTQueryTranslatorFactory”,但随后什么也没有发生。代码如下:
public User getUserByLogin(String username) {
String queryString = "SELECT u FROM USERS u WHERE u.USERNAME = :username";
TypedQuery<User> query = entityManager.createQuery(queryString, User.class);
return query.setParameter("username", username).getSingleResult();
}
它挂在TypedQuery<User> query = entityManager.createQuery(queryString, User.class);
但有趣的是,当我像这样更改方法主体时:
public User getUserByLogin(String username) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
Root<User> userRoot = criteriaQuery.from(User.class);
criteriaQuery.select(userRoot).where(criteriaBuilder.equal(userRoot.get("username"), username));
TypedQuery<User> query = entityManager.createQuery(criteriaQuery);
return query.getSingleResult();
}
它工作正常。相同的环境,只是方法不同。我错过了什么?
【问题讨论】: