2016-07-15 20 views
0

Wenn ich craceQuery aufrufen (String, Klasse) hängt Anwendung. Hibernate letzten INFO ist "Verwenden von ASTQueryTranslatorFactory", aber dann passiert nichts. Hier ist der Code:createQuery mit JPQL hängt

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(); 
} 

Es hängt an TypedQuery<User> query = entityManager.createQuery(queryString, User.class);

Aber was ist lustig, wenn ich Methode Körper wie folgt zu ändern:

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(); 
} 

es funktioniert gut. Gleiche Umgebung, nur unterschiedlicher Methos. Was vermisse ich?

Antwort

1

Warum FROM USERS u statt FROM USER u

+0

NUTZER Datenbank Tabellenname ist. – Franek

+0

Ja, dann stimmt das nicht. Bei JPQL müssen Sie den Entitätsnamen anstelle des Tabellennamens abfragen. –