2016-09-08 5 views
1

から来ました。..鋳造は、私は、次のJPQLを実行したとき、私は、データの多くの行と200列を持つエンティティを持っているJPQL

StringBuffer nativeQuery = new StringBuffer(); 
    nativeQuery.append("SELECT b FROM PeopleMaster b WHERE b.gdGrp=?1"); 

    query = getEntityManager().createQuery(nativeQuery.toString()); 
    query.setParameter(1, searchParam.getCode()); 

    List<PeopleMaster> list = query.getResultList(); 

リスト移入し、次のセクションで正しくトラバース。 は、今私は、私たちが1列のみのデータをフェッチしているようPeopleMaster(List<PeopleMaster> list)への結果の割り当ては互換性がないことを認識しています

StringBuffer nativeQuery = new StringBuffer(); 
    nativeQuery.append("SELECT distinct(b.empId) FROM PeopleMaster b WHERE b.gdGrp=?1"); 

..私は以下のようなドロップダウンのためのデータの1列のみを必要とする要件を持っています。

したがって、適切な割り当て方法は何ですか? 1つの列で新しいエンティティを作成し、その結果をListに割り当てる必要がありますか?

答えて

1

使用createNativeQuery

StringBuffer nativeQuery = new StringBuffer(); 
nativeQuery.append("SELECT distinct(b.empId) FROM PeopleMaster b WHERE b.gdGrp=?1"); 
Query q = getEntityManager().createNativeQuery(nativeQuery.toString()); 
query.setParameter(1, searchParam.getCode()); 

List<Object[]> ids = q.getResultList(); 

for (Object[] record : ids) { 
    System.out.println("Found a distinct employee id: " + record[0]); 
} 

あなたが見ることができるように、あなたが戻ってcreateNativeQueryから取得結果はオブジェクトの配列に対応する各レコードで、List<Object>です。あなたのケースでは、各レコードはIDの列を1つだけ持ちます。

+0

JPQLで同じクエリを実行すると、オブジェクトのリストが返されます。ネイティブの必要はありません。 –

関連する問題