带有JPQL的createQuery挂起

时间:2016-07-15 01:23:47

标签: java hibernate jpa jpql

当我调用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();
}

它工作正常。相同的环境,只是不同的方法体。我错过了什么?

1 个答案:

答案 0 :(得分:1)

为什么FROM USERS u代替FROM USER u