Object[] のリストを取得し、ループしてそのようにオブジェクトを設定する代わりに、名前付きネイティブ クエリをオンザフライでマップできるかどうか疑問に思っています。大量のデータセットを返すことがわかっている呼び出しがあり、それを自分のエンティティに正しくマップできるようにしたいと考えています。私はそれを行うことができますか、それとも結果セットをループし続ける必要がありますか?
これが私が今していることです...
List<Provider> ObjList = (List<Provider>) emf.createNativeQuery(assembleQuery(organizationIDs, 5)).getResultList();
それが私のエンティティ、リストです (私のエンティティはプロバイダです)。通常、私は a を返すだけでList<Object[]>
、それをループしてすべてのオブジェクトを取得し、それらを新しいプロバイダーとして設定してリストに追加します....
//List<Provider> provList = new ArrayList<Provider>();
/*for(Object[] obj: ObjList)
{
provList.add(this.GetProviderFromObj(obj));
}*/
ご覧のとおり、コードのそのセクションをコメントアウトして、これを試してみました。ネイティブ クエリをエンティティ自体に配置し、それを createNamedQuery 経由で呼び出すと、名前付きネイティブ クエリをマップできることがわかりました。私はそのようにしますが、IN
確認したい ID のリストがあるため、oracle キーワードを使用する必要があります。必要なのはそれだけではありません。ご存知のように、ネイティブ クエリはin
キーワードを適切に処理しません。何かアドバイス?
NamedNativeQueries で IN キーワードだけが適切にサポートされていればよいのですが。