2016-07-15 2 views
0

Когда я вызываю приложение createQuery (String, Class), зависает. Hibernate last INFO - «Использование ASTQueryTranslatorFactory», но затем ничего не происходит. Вот код:createQuery с JPQL зависает

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

Почему FROM USERS u вместо FROM USER u

+0

ПОЛЬЗОВАТЕЛЕЙ это имя таблицы базы данных. – Franek

+0

Да, тогда это неправильно. С JPQL вам нужно запросить имя объекта вместо имени таблицы. –

Смежные вопросы