1. ホーム

[解決済み] JPA : ネイティブクエリ結果セットをPOJOクラスコレクションに変換する方法

2022-04-08 06:01:37

質問

私はプロジェクトでJPAを使用しています。

私は、5つのテーブルで結合操作を行う必要があるクエリにたどり着きました。そこで私は、5つのフィールドを返すネイティブクエリを作成しました。

ここで、結果オブジェクトを、同じ5つの文字列を含むJava POJOクラスに変換したいと思います。

JPAでその結果を直接POJOオブジェクトリストにキャストする方法はありますか?

私は次の解決策を思いついた.

@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "nativeSQL",  
        query = "SELECT * FROM Actors",  
        resultClass = db.Actor.class),  
    @NamedNativeQuery(  
        name = "nativeSQL2",  
        query = "SELECT COUNT(*) FROM Actors",  
        resultClass = XXXXX) // <--------------- problem  
})  

ここでresultClassに、実際のJPAエンティティであるクラスを提供する必要があるのでしょうか? または 同じカラム名を含む任意のJAVA POJOクラスに変換することができます。

どのように解決するのですか?

JPAでは SqlResultSetMapping を使用すると、ネイティブクエリから返されるものをすべてエンティティ またはカスタムクラス .

EDIT JPA 1.0では、非エンティティクラスへのマッピングは許可されていません。JPA 2.1では コンストラクタ結果 が追加され、返り値をJavaクラスにマッピングできるようになりました。

また、OPの問題であるカウントの取得については、結果セットのマッピングを1つの ColumnResult