問題タブ [sqlresultsetmapping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - jpa ネイティブ クエリ制御エンティティ (パート 2)
続き JPAネイティブクエリで複数のエンティティを取得
私のデータベース (テスト)
/li>
まず、
/li>company
テーブルをバックアップします。次に、
/li>staff
テーブルをバックアップします。今、テーブルとクラスを修正したくありません。を制御するにはどうすればよいですか? 以下から?
助けてください...
java - ネイティブ クエリの結果セットをエンティティ内の変数にマップする方法
ユーザーと注釈の 2 つのエンティティがあり、注釈テーブルのクエリからの一連の結果をユーザー エンティティの一時変数に追加したいと考えています。
エンティティ:
ユーザー
注釈
したがってSet<Annotation> annotations
、Annotations テーブルに対するクエリの結果を変数に保持する必要があります。特定の方法で結果を制限する必要があるため、これは単純な 1 対多のマッピングではありません。実際、クエリは次のとおりです。
これは SQLResultSetMapping を介して可能だと思いますが、結果は常に別の異なるエンティティにマップされているようです。セットをコレクションとして抽出し、希望する方法で保存することはできますか?
java - Javaを使用してSQL結果セットから適切にJSONを作成する
私はテーブルを持っています
これらのアイテムを国と州の 2 つの選択ボックスに表示する必要があります。国選択ボックスから米国を選択すると、州選択ボックスにテキサスとアラスカが表示されます。したがって、Jsonオブジェクトを次のように作成する必要があります
現在、国と州を別々に取得するために 2 つの別々の SQL を使用しています。JavaクラスCountryを次のように使用します
そして私はDAOを
オブジェクトを次のように取得します。
同様に、状態のクラスとデータを抽出するコードを作成し、状態を次のように取得します
これは、選択ボックスに個別に表示できます。
しかし、選択ボックスに正しく表示するには、次の方法でオブジェクトが必要です。
次のようにJavaクラスを作成できます。
結果セットの値をそのようなオブジェクトに格納し、目的の JSON オブジェクトを生成する方法を知る必要があります。
java - 繰り返しデータとリストを使用した JPA ネイティブ クエリ結果セット マッピング
ネイティブ クエリのデータを、リストを含むオブジェクトにマップしたいと考えています。
私がこのクエリを持っているとしましょう(これは私がやりたいことの不自然な例です)
このデータを返します
person と sales のデータが繰り返されていますが、住所は一意であることに注意してください。
したがって、次のようなオブジェクトにマップしたいと思います。
ここで、Person、Sales、および Address はすべてマップされたエンティティです。
最終的に 3 つの PersonSalesAddressSummary のリストを作成したいのですが、結果セットのマッピングを設定する方法がわかりません...可能だと思いますが、どこから始めればよいかわかりません。この質問を適切に表現する方法についてのヘルプも役立ちます。
編集:より明確にするために、私が最終的に保持したいオブジェクトの1つが保持されます:
少なくともそれがより明確であることを願っています
java - Java JPA Hibernate SqlResultSetMapping エイリアス
Hibernate 4.3.11実装でJPA 2.1を使用するJavaアプリケーションでは、SqlResultSetMapping
ネイティブクエリ結果をエンティティにマップするために使用しようとしています。クエリには、同じ列名を持つ結合された 2 つのテーブルが含まれているため、エイリアスを使用してそれらをマップする必要があります (ここで説明されている問題: http://www.tinesoft.com/java/be-aware-of-multiple-result-mappings-in- jpa )
質問を簡単にするために、クエリとエンティティを最小限に縮小しましたが、それでも問題が発生します。実際のコードでは、2 つのエンティティと DB 関数を使用します。これが、JPQL の代わりにネイティブ クエリを使用する理由です。
ゲートウェイ エンティティ:
SqlResultSetMapping:
クエリ:
例外:
SELECT *
inなしfields = @FieldResult...
で使用するとSqlResultSetMapping
、コードは期待どおりに機能しますが、異なるテーブルに同じ列名があるため、それができません。
迅速な解決策が必要なため、結果をエンティティに手動でマッピングすることでこれを解決しますが、何か間違ったことをしているのか、Hibernate が私がやろうとしていることをサポートしていないのかを知ることは素晴らしいことです。本「Pro JPA 2」には、動作するはずの非常によく似た例が含まれています。
更新: Hibernate 5.1.1 (Spring 4.3.2) でテスト済み - 同じ結果
更新:複数の回答で言及されているように、すべての列名を指定する必要があるようです。これは、JPA/Hibernate の大きな問題のように思えます。これらの列名は、手動で指定された例外を除いて、エンティティから派生する可能性があります。代わりに、列名を 3 回 (1. クエリ、2. 結果セット マッピング、3. エンティティ) 記述する必要があり、見苦しく、維持が困難です。