問題タブ [resulttransformer]
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 - Hibernate の結果トランスフォーマーを使用して、関連する管理されていないエンティティにマップできますか?
ResultTransformer を使用して、管理されていない単純なエンティティ、つまり他のエンティティとの関係を持たないエンティティにマップしました。しかし、休止状態を介して関連する管理されていないエンティティのセットにマップできるかどうか疑問に思っていましたか? 明確にするために、以下のような管理されていないエンティティのセットがある場合、
そして、私は以下のようなSQLを持っています、
それから私は次のようなことをしたいと思います
ResultTransformer を使用せずに、返されたデータを調べてオブジェクト グラフを自分で設定することで、これを実行できることはわかっています。そのロジックを記述する必要がある場合は、カスタム ResultTransformer として実装したいと思います。そのようにするのは賢明だと思いますか。
アイデアや助けをいただければ幸いです。ありがとう!
c# - NHibernate マップされていないテーブル - オブジェクトは複数列型です - ToListResultTransformer
データベースから構築された生のSQLクエリを実行するNHibernateがあります。ソフトウェアでは、使用者は定義された順序でテーブルといくつかの列を選択できます。私のソフトウェアでは、この情報を使用して、テーブルから定義された列を選択し、列を 1 つの列に連結する SQL クエリを作成します。ここに簡単な例があります。
ユーザーは、テーブルから列FirstName
undを選択することを定義します。次に、次の select ステートメントを作成します。SurName
User
そして今、selectステートメントを使用しようとしています:
しかし、私の問題はGenericADOException
、メッセージが表示されることです
オブジェクトは複数列タイプです
私の問題については、インターネット上であまり見つかりませんでした。このエラーなしで同じタスクを実行するスレッドのみ: NHibernate SQL Query mapping on Single Column Result
mysql - 1 対多のコレクションをフェッチしないプロジェクションを含む条件クエリ
だから私は以下のように2つの休止状態のポジョを持っています
以下の基準を使用して所有者テーブルを照会しています -
それぞれの猫が入力された所有者のリストが必要です。
プロジェクションを追加しない場合 ( select * と同等)、所有者ごとに猫が配置されます。ただし、所有者テーブルには他の多くのテーブルとの外部キー関係を持つ60を超える列があるため、select *は非常に高価になります。プロジェクションを使用して必要な列のみを選択し、クエリをより高速に実行したいと考えています。そして、プロジェクションやエイリアスを追加すると、所有者を取得しますが、猫は取得しません (各所有者の猫は null です)。
私はこれに対する解決策をたくさん検索し、基準でエイリアスとプロジェクションを作成するすべての方法を試しました。また、カスタム ResultTransformers を使用してみました。プロジェクションを使用している場合、それらのどれも機能しないようです。
他の誰かが同様の問題に直面しましたか? 何か案は?
c# - NHibernate AliasToBean トランスフォーマーがスローする場合、QueryOver エイリアスはプライベート フィールドです
VS2015 の .net 4.5 ターゲット プロジェクトで NuGet の NHibernate 3.3.1.4000 を使用しています。
最初のenv1 は VS2012 とVS2015の Windows 8.1 で、2 つ目は Windows 10 と VS2015 のみの env2 です。
QueryOver docsに記載されているように、エイリアスは次のようになります。
QueryOver では、エイリアスは空の変数を使用して割り当てられます。変数はどこでも宣言できます (ただし、実行時には null にする必要があります)。コンパイラは、変数が正しく使用されていることに対して構文をチェックできますが、実行時に変数は評価されません (エイリアスのプレースホルダーとして使用されるだけです)。
QueryOver の各 Lambda 式関数には、エイリアスを使用できる対応するオーバーロードと、サブ QueryOver を作成せずにエイリアスを使用して関連付けをトラバースする .JoinAlias 関数があります。
したがって、これは、null 値を持つプライベート フィールドがエイリアスとして正常に機能することを意味します。
しかし...そう簡単ではありません。
次の例があります。
これはenv1で問題なく動作しますが、例外がスローされます:
env2で。
AleasToBean なしで Id のリストを選択した場合に注意してください。
両方の環境で期待どおりに動作します。
env2で何が問題を引き起こしているのかについて何か考えはありますか?
回避策は簡単です。メソッドと同じスコープでエイリアスを作成するだけですが、例が正しいように見えるので、構成に何が欠けているのか知りたいです。:(
java - Hibernate Resultset を pojo のリストを含む pojo に変換する
私はこれに似たpojoを持っています:
CourseResultPojo は次のようになります。
学生、コース、教師、電話、電子メールなどの Hibernate エンティティ (データベース: Postgres) があります。
これが私が持っているコードのスニペットです:
JPQLではなく、NativeSQLでクエリを保持したいと思います。編集:クエリはいつでも変更できるためです。クエリをデータベースに保存し、必要に応じて編集したいと思います。ネイティブ クエリにすると、テストが容易になります。
JPQLには、 select new (Pojo.class.getName()....) のようなコンストラクターを介してJPAクエリからの結果をpojoに変換できる同様の機能があることを知っていますが、それには私が直面している同じ問題があります。
私が持っているものでは、サービスが返す StudentResultPojo リストをループする必要があり、Hibernate 関係をナビゲートしてデータベースまたは Java コードからデータを取得して、すべての StudentResultPojo の coursePojoList を埋める必要があります。時間。
エンティティは次のようになります。
質問: 結果を 2 行で返すクエリがある場合 (JSON ではなく、クエリの実行時に返される結果のみ)
CourseResultPojos のリストを使用して、結果を単一の StudentResultPojo に変換する方法はありますか?
つまり、私の StudentResultPojo の属性値は次のようになります
リストには 2 つの CourseResultPojo オブジェクトがあり、
ありがとうございました。
c# - AliasesToBean トランスフォーマーを使用した Nhibernate の第 2 レベルのキャッシュ
私はエンティティを持っています:
関連する Dto:
私は非常に単純なクエリを持っています:
二次キャッシュを接続するまでは機能していました。したがって、Cacheable()
行のコメントを外すと、例外が発生します。
メッセージ: 値を null にすることはできません。パラメータ名: エイリアス StackTrace:
それで、それの何が問題なのですか?NHibernate のバグですか?さまざまなプロバイダーを試しましたが、役に立ちませんでした。また、次のように CacheableResultTransformer を作成しようとしました:
データを返してキャッシュできますが、タプル (object[]) としてのみです。Dtoを返すことができませんでした。
問題を示す実際の例を次に示します: github