0
當我調用createQuery(String,Class)應用程序掛起時。 Hibernate的最後一個INFO是「使用ASTQueryTranslatorFactory」,但沒有任何反應。下面是代碼:使用JPQL的createQuery掛起
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();
}
它工作正常。同樣的環境,只是不同的方法。我錯過了什麼?
用戶來說是數據庫表名。 – Franek
是的,那是什麼錯誤。使用JPQL,您需要查詢實體名稱而不是表名。 –