2017-09-27 19 views
0

データベースビジュアライザでクエリを実行すると、完璧に動作しますが、DAOクラスメソッドで変換するときに構文に問題があると思います。DAOクラスで解決策を提供していないクエリ

私はビジュアライザで

を与えられた名前に対して、全体のデータを取得したい:

public List<XHrUser> findXHrUserByNameInTable() 
{ 
String name ="Irum"; 
Query query = em.createQuery("SELECT xHrNewUserObj.firstName,xHrNewUserObj.lastName, xHrNewUserObj.nic, xHrNewUserObj.phone, xHrNewUserObj.emil FROM XHrUser xHrNewUserObj where (xHrNewUserObj.firstName) = (name)"); 

List<XHrUser> list = query.getResultList(); 
return list; 

} 

ダオ

の代わりに単一の行を示すで今

SELECT first_name,last_name,nic,phone,email FROM x_hr_user where (first_name = 'Irum'); 

、それは全体のデータ表 を表示しますありがとうございます

+0

名は、それがどこ声明 – Jens

答えて

0

現在のクエリは有効なJPQLではありません。生のname文字列をクエリに挿入しようとしたようですが、これはネイティブクエリを使用して行うことができますが、確かに望ましくありません。代わりに、JPQLクエリで名前付きパラメータを使用し、nameをバインドします。

String name = "Irum"; 
Query query = em.createQuery("SELECT x FROM XHrUser WHERE x.firstName = :name") 
    .setParameter("name", name); 

List<XhrUser> list = query.getResultList(); 
0

あなたはクエリを書く必要があります 以下のように。ここで:は変数に使用されます

Query query = em.createQuery("SELECT xHrNewUserObj.firstName,xHrNewUserObj.lastName, xHrNewUserObj.nic, xHrNewUserObj.phone, xHrNewUserObj.emil FROM XHrUser xHrNewUserObj where (xHrNewUserObj.firstName) = :name"); 
+0

の列名である、ここで、変数ではない私は、これも有効なJPQLでわからないんだけど、それが実行されている場合でも、それはポイントを逃します。 JPQLクエリはエンティティを返します。エンティティはクラスにマッピングされるため、 'XHrUser'オブジェクトのフィールドをすべて戻します。 –

関連する問題