問題タブ [nhibernate-criteria]
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.
nhibernate - タイプへのプロジェクションNHibernate でのマッピング?
クラスを考えると:
そして、マッピング
Linq または HQL を介して VotingResult.Item.GetType() を投影する方法はありますか (「VotingResult から r.class を選択する」は機能しないようです。参照をタイプと ID に簡単にフラット化します。理想的には、Linq または AliasToBeanResultTransformer を使用します。
記録として、DomainEntity サブクラスの継承マッピングは Table Per Class です。
ありがとう
nhibernate - NHibernate 基準クエリ - 1 対 1 の関係での使用方法
シンプルな 3 つの POCO クラスがあります。
これらのマッピング クラスを作成しました。
次に、このメソッドを使用して単純な NHibernate リポジトリ クラスを作成しました。
テストのために、ユーザーなどのエンティティのリポジトリを作成しました。
そして、私はこのスタイルでクエリを作成できるようにしたいと思います:
この試行はエラーで終了しました:
プロパティを解決できませんでした: プロファイル: Repository.User
ユーザーにはプロファイルのプロファイル タイプのプロパティがあり、このプロパティには ProfileId、Age、および性別のプロパティがあります。
** #1 編集:**
@これを試しました:
エラーで終了しました:
プロパティを解決できませんでした: Profile.Sex of: Repository.User
#2 編集済み
私はネイサンのアドバイスを使ってみました:
結果をリストに変換しようとすると、再びこのエラーが発生します: プロパティを解決できませんでした: プロファイル: Repository.User
nhibernate - NHibernateで生成されたSQLをキャッチし、実行する前に修正する
実際に実行せずに、コードでnhibernateによって作成されるSQLを取得することは可能ですか?
基準APIを介して構築した複雑な基準オブジェクトがあります。この基準オブジェクトは、さまざまなselectステートメントのベースを形成します。次に、このベースを使用して、アプリケーション全体のさまざまなシナリオで必要な追加の基準を追加できます。
selectステートメントの1つにhave句を追加する必要がありますが、これは条件apiを使用するオプションではないようです。必要なプロジェクションを作成できます。生成されたSQLを表示する場合、既存の基準の下部に追加する必要があるのは...
非常に接近しているのは非常にイライラしますが、生成されたSQLの下部にタグを付けるための余分な行を1行取得できないようです。
生成されたSQLを抽出できれば、必要なhaving句にタグを付けて、NhibernateSQLQueryCriteriaを介してすべてを送信できると思います。
私はそれが理想的ではないことを知っていますが、残りが共通の基準ベースを共有しているときに1つのクエリをHQLまたはSQLで記述するよりも、これは私には良いように思えます。
これは可能ですか、それは良い考えですか?どんな代替案も歓迎されます。
c# - 複数のエンティティにわたるクエリ
解決方法がわからないという奇妙な要件があります。
次のクラス定義を想定しています。
ユーザーがシステムでクライアントを名前で検索する場合、1ホップ離れたセカンダリクライアントだけでなく、すべてのプライマリクライアントを検索する必要があります。(つまり、PrimaryClientが設定されている場合は、PrimaryClient.Person.Nameプロパティを確認する必要がありますが、PrimaryClient.PrimaryClientについて心配する必要はありません。)
DetachedCriteriaを使用すると、次のようになります。
明らかに、これはかなり遠いです。少し掘り下げてみると、エイリアスを設定する必要があることがわかりました。最初のものはPerson.Surnameを見つけるのが簡単でした:
ただし、私の人生では、PrimaryClient.Personのエイリアスに対して何ができるかわかりません。私はここで間違った道を進んでいますか?どんな助けでもいただければ幸いです。
注:最初に言及するのを忘れました。SecondaryClientsとPrimaryClientがnullである可能性があります。
nhibernate - NHibernate Criteria はアンチジョイン/サブクエリの混乱を残しました
前置きとして、NHibernate は私の快適な領域をはるかに超えているため、これは私が考えているよりもはるかに単純である可能性があります。
users
テーブルと、オブジェクトevents
にマップされたテーブルがありuser
ますevent
。
私event
のオブジェクトは特異なオブジェクトを参照していuser
ます。
LastActivityTimeStampuser
のオブジェクトに永続化するプロパティがあります。
EventTypeとSuccessevent
に関連するオブジェクトのプロパティがあります。
「オンライン」のユーザーのリストを特定するには、LastActivityTimeStampが以前に計算された値よりも大きく、テーブルcutoff
内の最後のアクティビティがevents
成功した「ログオフ」イベント タイプではなかったすべてのユーザー オブジェクトを収集する必要があります。
この基準はどのように書けばよいでしょうか?
nhibernate - NHibernate でスーパークラスをクエリするときに、サブクラスの左結合からプロパティを返す
ICriteria
スーパークラスからプロパティを返す がありますAnimal
。ここで、サブクラスのいくつかのプロパティを結果に含めたいと思いますBird
。他のサブクラスの場合、これらのプロパティは を返す必要がありnull
ます。サブクラスごとのテーブル継承を使用しています。たくさん追加せずにこれを行う方法はありますDetachedCriteria
か? Hibernate はすでにサブクラス テーブルに結合を残しています。これらの結合から値を投影する方法はありますか?
更新:サブクラスのプロパティで並べ替えとフィルター処理を行う必要があり、クエリ全体でページングをサポートする必要があります。
これが私のモデルです:
次の表を考えます。
次の結果セットが必要です。
nhibernate - 一致するレコードの数に対して nHibernate Criterion を含めるにはどうすればよいですか
バックグラウンド:
- マスター テーブルと詳細テーブル、M と D があります。
- M には注文が含まれ、D にはさまざまなサイズ (S、M、L、XL) のパーツを含む注文の詳細が含まれます。
- 特定の注文には、任意の数の部品が含まれる場合があります。
- すべての注文の 95% に、サイズ S のアイテムが少なくとも 1 つ含まれています。
- 新しい要件は、サイズが将来追加される可能性があるため、SMLXL のリストをハードコーディングすることはもはや機能しません
特定のサイズのパーツのみを含むすべての注文 M のリストを返す nHibernate クエリを探しています。
つまり、サイズ S のパーツのみを含むすべての注文を返し、サイズが混在するすべての注文を除外します。
私が使用していた:
もっと良い方法があるはずです。「count(DISTINCT SIZES) = 1」のようなもの
しかし、nHibernate でこれを実装する方法がわかりません。
提案?
nhibernate - 整数としてマップされた列挙型を比較する Linq から NHibernate へのクエリは成功しますが、同等の基準クエリとして失敗します
Status プロパティを含む ProductRisk をクエリしています。ここで、Status は列挙型です。ProductRisk のマッピングは次のとおりです。
Status は、4 つの可能な値を持つ列挙型です。データベースでは、ルックアップ テーブルへの外部キー参照として表されます。私のリポジトリで、ステータスがMedium
またはの ProductRisk オブジェクトをプルしたいと考えていますHigh
。Ling To NHibernate の次のクエリは機能します。
しかし、Criteria API で同等のクエリを (私が思うに) 使用すると、次のようになります。
次のエラーが表示されます。
NHibernate.Criterion.SimpleExpression のタイプが一致しません: ステータスは、予想されるタイプ System.Int32、実際のタイプ FIS.AccountManagement.Core.Domain.RiskStatus です
何故ですか?助けてくれてありがとう。
nhibernate - 多くの列挙値を結合する Hibernate 基準
という名前の単一のクラスがあり、このクラスには列挙値User
のコレクションがあります。UserRole
User
toUserRole
関係は多対多の関係であり、3 つのテーブル (userId と roleId のみを持つ tblUser、tblRole、および tblUserRole) で実装されます。HBM は次のとおりです。
今、同じセマティクスを持つ基準を作成したいと思います
UserRole
enum用の別のマッピング ファイルを使用せずに、(queryOver または分離された基準を使用して) そのような基準を実現することは可能ですか?
ヒントを事前にありがとう。
Mrks