問題タブ [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.

0 投票する
3 に答える
9929 参照

c# - NHibernateおよびCriteriaとの統合?

NHibernateおよびCriteriaとの統合:

CriteriaまたはQueryOverで可能ですか?そうでない場合、同じクエリ内で2つの結果の結合を実現する他の方法はありますか?

0 投票する
1 に答える
273 参照

nhibernate - NHibernate クエリのロジックを逆にする

特定のページ (ページ ID で参照) を含むアイテムNHibernateのコレクションを取得する次のクエリを作成しました。MenuView

これは正常に機能します。ただし、今は反対のことをしたい:指定された ID を持つページを含まないすべての編集可能なメニュー オブジェクトを照会したい。これまでのところ、これに対する解決策は見つかりませんでした。上記のクエリのページ セクションを単純に逆にすると、次のようになると思います。

ただし、これにより次の SQL が生成されます。

id が 8 のページを含むメニュー項目の結果をまだ返しているのはどれですかこの単純なロジックの反転が、コードの点でそれほど単純ではないのはなぜですか?

[更新] フィーロからの提案を受けて、提案されたクエリの変更は次のようになります。

次の sql ステートメントを生成します。

)

最初はまさに​​私が望んでいたように見えますが、悲しいことに(おそらく結合の理解が不十分なため)、まだ私が望んでいたものを完全に返していません。次の表を考えると

メニュー

メニュー表のショット

次に、PagesInMenu の結合テーブル( WHERE PageID = 1 の WHERE 句を使用)

結合テーブルの表示

ID が 1 のページがメニュー 5 と 6 で参照されていないことがわかります。問題のクエリは、ID が 5 のメニューの ID、名前、および説明である 1 つの行のみを返すと予想されます。ページ 1含まれ、編集可能な唯一のメニュー

代わりに、新しいクエリが返されます。

ここに画像の説明を入力

返されたすべての行を取り消しましたが、そうすべきではありません。ここで何が起こっているのですか!?

0 投票する
1 に答える
943 参照

nhibernate - nhibernate - 中間テーブルによる基準

テーブルチームがあり、テーブルロケーションがあります。各チームは複数の場所を持つことができ、各場所は複数のチームを持つことができるため、多対多の関係になります。

このシナリオがデータベースに作成されると、多対多のリンクを保持するために、Team、Location、および TeamLocation の 3 つのテーブルが作成されます。

次を使用してこれを nhibernate にマップしました... Team.hbm.xml

および Location.hbm.xml

現在、基準 API を使用して特定の場所に拠点を置くすべてのチームを取得しようとしていますが、これはできません..

同等のSQL...

そしてasp.netコードで

これはスローされ、エラーが発生します..

私は理解することができません:(

私を訂正してください..ありがとう!

0 投票する
3 に答える
4905 参照

nhibernate - 関連するエンティティを取得せずに、NHibernate で外部キー列をクエリする方法

と の 2 つのクラスがあるParentとしChildます。AParentにはプロパティChildrenがあり、これはもちろんChildオブジェクトのコレクションです。

ChildParentIdプロパティを持っていません。それはParentプロパティを持っています。

したがって、私の NHibernate マッピングにChildは以下が含まれます。

そして私のParentマッピングには以下が含まれます:

ここで私がやりたいことは次のとおりです。Child特定の を持つすべてのオブジェクトを取得したいParentIdParent最初に を取得してから、そのChildrenプロパティを返すことができることを知っています。Childしかし、テーブルを直接クエリしたい場合はどうすればよいでしょうか?

マップされたプロパティ (たとえば、Name) である場合、NHibernate の基準を使用できますが、この場合ParentIdはマップされません。

私は次のようなものを使ってみました:

しかし、それはうまくいきません。私はSQLCriterionを使用することに頼りました(ここで説明されているように)が、友人/同僚が私にもっと良い方法があるに違いないと考えさせました。

何か案は?突起のあるものとRestrictions.EqProperty?

0 投票する
1 に答える
134 参照

sql-server - Nhibernateクエリでnot(columnName ='value')ではなくcolumnName <>'value'を生成することは可能ですか?)

Nhibernateクエリでnot(columnName ='value')ではなくcolumnName <>'value'を持つSQLを生成することは可能ですか?

not()を使用すると、<>でSQLのパフォーマンスの問題が発生する可能性があると言われています。

通常、私はこのようにクエリを書いています...

その結果、

アップデート

この質問は、いずれかの方法でコーディングすることでパフォーマンスの問題が発生しなくなったことを示しています。

SQL Serverでは、not(columnName ='value')とcolumnName <>'value'の間に違いはありますか?

0 投票する
1 に答える
211 参照

nhibernate - Hibernate のデフォルトの子コレクションと基準戦略

ドメイン モデルには、 または のいずれかStatusの値を持つ列挙型を持つエンティティが多数あります。ActiveDeleted

処理方法に関する推奨アプローチに関するドキュメントとアドバイスを探しています。

  1. 列挙型を持つエンティティのコレクションを取得するときStatusに、値がデフォルトで設定されているものを除外するDeleted(ケースバイケースでオーバーライド可能)

  2. エンティティの子コレクションをフェッチするとき、デフォルトで値がデフォルトで設定されているものを除外Deletedします。

Status要約すると、 enum プロパティを持つエンティティに関連するすべてのデータを効果的に保持したいのですがDeleted、デフォルトで for status の値を持つデータは除外します。

正しい方向へのポインタは大歓迎です。

0 投票する
1 に答える
885 参照

nhibernate - Nibernate の使用 ユーザー名とパスワードを使用してログインしたい

ユーザー名とパスワードの詳細がテーブル TUser に存在することに関して、人々が私を助けてくれるのが好きです。 Nhibernate を使用して内部にログインできます。助けてください。これは以下のコードです

0 投票する
0 に答える
448 参照

nhibernate - 複数のサブクラスを結合し、基準を使用して列名を重複させるNHibernate

次のエンティティ構造があるとします。

基本クラス Document には、フィールドIdNameCreateDateがあります。結合されたサブクラス DocumentA には、フィールドBookPagesがあります。DocumentB にはMagazinePagesがあります。

問題は、基準を使用してレコードを取得しようとするときです。

そのため、selectColumnsに2 つのPagesカラムがある場合、NHibernate は最初のカラムからのみデータを選択します。実際、このようなSQLクエリも生成します

基準を使用して私の問題を解決する方法を知っている人はいますか? ところで、この構造を変更するオプションはありません。このシステムでは、ユーザーは独自のクラスとネストされたクラスを定義できます。

0 投票する
2 に答える
2900 参照

nhibernate - NHibernate は文字列パラメーターを varchar ではなく nvarchar に変換します。どうすればこれを止めることができますか?

ビューにマップされたクラスがあり、患者の記録を検索するために姓と名を検索しています。ビューは最終的に患者テーブルの名字フィールドを調べます (入力によっては他のフィールドも表示される可能性があります)。条件が SQL に変換されると、文字列が nvarchar パラメータとして入力されます。マッピングで既に type="AnsiString" と length="50" を使用していますが、これらを nvarchar に変換しているため、クエリのパフォーマンスが低下しています。

SQL プロファイラーは、nvarchar パラメーターを使用し、すべての文字列の前に N を付けてキャストするように出力 SQL を表示しています。

何か不足していますか?基準またはマッピングに対して他に行う必要があることはありますか? さらに、パラメーターの長さも定数の 50 ではありません。NHibernate 2.1 を使用しています。

0 投票する
1 に答える
727 参照

sql-server - NHibernate の Criterion API を使用してビットマスク/ビットフィールドの WHERE 句を指定するにはどうすればよいですか

重複の可能性:
NHibernate に列挙型として格納されているフラグを照会する方法

私は3つのテーブルを持っています- Recipient、、MessageMessageType

MessageType は次のようになります。

Recipientビットフィールドとして使用される整数列を含みます。受信者は、受信したいメッセージの種類を選択できます。受信者がニュースレターや特別オファーを受け取りたい場合は、ビットフィールドを次のように設定します。(2 ^ 2) | (2 ^ 3)

Messageへの参照が含まれており、次のように定義されているMessageTypeId計算列MessageTypeBitFlagPOWER(2, MessageTypeId)

SQL で表現された私のクエリは次のようになります。

bitfield 列と bitflag 列でビットごとの AND を実行することにより、特定の受信者が関心のあるメッセージのみを簡単に選択できます。

問題は、SQL でこれを行っていないことです。これを、NHibernate Criteria API で構築されたかなりリッチなシステムに追加オプションとして追加する必要があります。

NHibernate API を介してこの基準を表現する方法はありますか? API を使用するか、既存の基準に SQL/HQL 句を追加することによってですか?