2016-07-15 12 views
0

createQuery(String、Class)アプリケーションを呼び出すと、アプリケーションがハングします。最後のINFOのHibernateは "Using 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(); 
} 

それが正常に動作します。同じ環境、ちょうど異なる体のメトス。私は何が欠けていますか?

答えて

1

なぜFROM USERS u代わりのFROM USER u

+0

USERSデータベーステーブル名です。 – Franek

+0

はい、それは間違っています。 JPQLでは、テーブル名の代わりにエンティティ名を照会する必要があります。 –

関連する問題