JPA: ネイティブ クエリの結果を POJO に変換する
クエリ内で、ネイティブ クエリの結果を POJO に変換する必要性を示しました。 5 つのフィールドを含む POJO クラスのコレクション。 JPA に結果を POJO オブジェクトのリストに直接キャストする方法があるかどうかを考えました。
リフレクションを使用したカスタム オブジェクト マッピング
JPA の導入前の 1 つの可能な解決策2.1 では、リフレクションを使用して結果を手動でマッピングしていました。これには、ネイティブ クエリ結果と同じ数と型のフィールドを持つ POJO コンストラクターを作成するメソッドの定義と、クエリによって返されたタプル配列をコンストラクターにマッピングすることが含まれます。
JPA 2.1 での @SqlResultSetMapping の使用
JPA 2.1 では @SqlResultSetMapping アノテーションが導入されました。これにより、エンティティまたは XML ファイル内の結果セットのマッピングを作成できます。このマッピングは、ターゲット クラスと、そのプロパティに対応する結果セット内の列を定義します。このマッピングを使用すると、Query オブジェクトを作成し、マッピングの名前を指定して、結果を POJO オブジェクトのリストに直接キャストできます。
XML マッピング
注釈をエンティティ クラスから除外したい場合は、META-INF/orm.xml ファイルでマッピングを定義できます。これには、result-set-mapping 属性を使用してnamed-native-query 要素を作成し、ターゲット クラスと列名のマッピングを指定するconstructor-result を使用して sql-result-set-mapping 要素を定義することが含まれます。
マップされたエンティティ (JPA 2.0)
JPA 2.0 ではネイティブ クエリを POJO クラスにマッピングできますが、エンティティへのマッピングはサポートされています。これには、POJO にエンティティとして注釈を付け、そのプロパティをデータベース列にマップする必要があります。
結論
ネイティブ クエリ結果をマッピングするために選択するアプローチPOJO クラスは、使用している JPA のバージョンと、アノテーションまたは XML 構成の設定によって異なります。表示されるオプションはさまざまなレベルの柔軟性と利便性を提供し、プロジェクトのニーズに最も適したものを選択できます。
以上がJPA でネイティブ クエリ結果を POJO に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。