問題タブ [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.
c# - NHibernateおよびCriteriaとの統合?
NHibernateおよびCriteriaとの統合:
CriteriaまたはQueryOverで可能ですか?そうでない場合、同じクエリ内で2つの結果の結合を実現する他の方法はありますか?
nhibernate - NHibernate クエリのロジックを逆にする
特定のページ (ページ ID で参照) を含むアイテムNHibernate
のコレクションを取得する次のクエリを作成しました。MenuView
これは正常に機能します。ただし、今は反対のことをしたい:指定された ID を持つページを含まないすべての編集可能なメニュー オブジェクトを照会したい。これまでのところ、これに対する解決策は見つかりませんでした。上記のクエリのページ セクションを単純に逆にすると、次のようになると思います。
ただし、これにより次の SQL が生成されます。
id が 8 のページを含むメニュー項目の結果をまだ返しているのはどれですか。この単純なロジックの反転が、コードの点でそれほど単純ではないのはなぜですか?
[更新] フィーロからの提案を受けて、提案されたクエリの変更は次のようになります。
次の sql ステートメントを生成します。
)
最初はまさに私が望んでいたように見えますが、悲しいことに(おそらく結合の理解が不十分なため)、まだ私が望んでいたものを完全に返していません。次の表を考えると
メニュー
次に、PagesInMenu の結合テーブル( WHERE PageID = 1 の WHERE 句を使用)
ID が 1 のページがメニュー 5 と 6 で参照されていないことがわかります。問題のクエリは、ID が 5 のメニューの ID、名前、および説明である 1 つの行のみを返すと予想されます。ページ 1が含まれず、編集可能な唯一のメニュー
代わりに、新しいクエリが返されます。
返されたすべての行を取り消しましたが、そうすべきではありません。ここで何が起こっているのですか!?
nhibernate - nhibernate - 中間テーブルによる基準
テーブルチームがあり、テーブルロケーションがあります。各チームは複数の場所を持つことができ、各場所は複数のチームを持つことができるため、多対多の関係になります。
このシナリオがデータベースに作成されると、多対多のリンクを保持するために、Team、Location、および TeamLocation の 3 つのテーブルが作成されます。
次を使用してこれを nhibernate にマップしました... Team.hbm.xml
および Location.hbm.xml
現在、基準 API を使用して特定の場所に拠点を置くすべてのチームを取得しようとしていますが、これはできません..
同等のSQL...
そしてasp.netコードで
これはスローされ、エラーが発生します..
私は理解することができません:(
私を訂正してください..ありがとう!
nhibernate - 関連するエンティティを取得せずに、NHibernate で外部キー列をクエリする方法
と の 2 つのクラスがあるParent
としChild
ます。AParent
にはプロパティChildren
があり、これはもちろんChild
オブジェクトのコレクションです。
Child
ParentId
プロパティを持っていません。それはParent
プロパティを持っています。
したがって、私の NHibernate マッピングにChild
は以下が含まれます。
そして私のParent
マッピングには以下が含まれます:
ここで私がやりたいことは次のとおりです。Child
特定の を持つすべてのオブジェクトを取得したいParentId
。Parent
最初に を取得してから、そのChildren
プロパティを返すことができることを知っています。Child
しかし、テーブルを直接クエリしたい場合はどうすればよいでしょうか?
マップされたプロパティ (たとえば、Name
) である場合、NHibernate の基準を使用できますが、この場合ParentId
はマップされません。
私は次のようなものを使ってみました:
しかし、それはうまくいきません。私はSQLCriterionを使用することに頼りました(ここで説明されているように)が、友人/同僚が私にもっと良い方法があるに違いないと考えさせました。
何か案は?突起のあるものとRestrictions.EqProperty
?
sql-server - Nhibernateクエリでnot(columnName ='value')ではなくcolumnName <>'value'を生成することは可能ですか?)
Nhibernateクエリでnot(columnName ='value')ではなくcolumnName <>'value'を持つSQLを生成することは可能ですか?
not()を使用すると、<>でSQLのパフォーマンスの問題が発生する可能性があると言われています。
通常、私はこのようにクエリを書いています...
その結果、
アップデート
この質問は、いずれかの方法でコーディングすることでパフォーマンスの問題が発生しなくなったことを示しています。
SQL Serverでは、not(columnName ='value')とcolumnName <>'value'の間に違いはありますか?
nhibernate - Hibernate のデフォルトの子コレクションと基準戦略
ドメイン モデルには、 または のいずれかStatus
の値を持つ列挙型を持つエンティティが多数あります。Active
Deleted
処理方法に関する推奨アプローチに関するドキュメントとアドバイスを探しています。
列挙型を持つエンティティのコレクションを取得するとき
Status
に、値がデフォルトで設定されているものを除外するDeleted
(ケースバイケースでオーバーライド可能)エンティティの子コレクションをフェッチするとき、デフォルトで値がデフォルトで設定されているものを除外
Deleted
します。
Status
要約すると、 enum プロパティを持つエンティティに関連するすべてのデータを効果的に保持したいのですがDeleted
、デフォルトで for status の値を持つデータは除外します。
正しい方向へのポインタは大歓迎です。
nhibernate - Nibernate の使用 ユーザー名とパスワードを使用してログインしたい
ユーザー名とパスワードの詳細がテーブル TUser に存在することに関して、人々が私を助けてくれるのが好きです。 Nhibernate を使用して内部にログインできます。助けてください。これは以下のコードです
nhibernate - 複数のサブクラスを結合し、基準を使用して列名を重複させるNHibernate
次のエンティティ構造があるとします。
基本クラス Document には、フィールドId、Name、CreateDateがあります。結合されたサブクラス DocumentA には、フィールドBook、Pagesがあります。DocumentB にはMagazine、Pagesがあります。
問題は、基準を使用してレコードを取得しようとするときです。
そのため、selectColumnsに2 つのPagesカラムがある場合、NHibernate は最初のカラムからのみデータを選択します。実際、このようなSQLクエリも生成します
基準を使用して私の問題を解決する方法を知っている人はいますか? ところで、この構造を変更するオプションはありません。このシステムでは、ユーザーは独自のクラスとネストされたクラスを定義できます。
nhibernate - NHibernate は文字列パラメーターを varchar ではなく nvarchar に変換します。どうすればこれを止めることができますか?
ビューにマップされたクラスがあり、患者の記録を検索するために姓と名を検索しています。ビューは最終的に患者テーブルの名字フィールドを調べます (入力によっては他のフィールドも表示される可能性があります)。条件が SQL に変換されると、文字列が nvarchar パラメータとして入力されます。マッピングで既に type="AnsiString" と length="50" を使用していますが、これらを nvarchar に変換しているため、クエリのパフォーマンスが低下しています。
SQL プロファイラーは、nvarchar パラメーターを使用し、すべての文字列の前に N を付けてキャストするように出力 SQL を表示しています。
何か不足していますか?基準またはマッピングに対して他に行う必要があることはありますか? さらに、パラメーターの長さも定数の 50 ではありません。NHibernate 2.1 を使用しています。
sql-server - NHibernate の Criterion API を使用してビットマスク/ビットフィールドの WHERE 句を指定するにはどうすればよいですか
私は3つのテーブルを持っています- Recipient
、、Message
MessageType
MessageType は次のようになります。
Recipient
ビットフィールドとして使用される整数列を含みます。受信者は、受信したいメッセージの種類を選択できます。受信者がニュースレターや特別オファーを受け取りたい場合は、ビットフィールドを次のように設定します。(2 ^ 2) | (2 ^ 3)
Message
への参照が含まれており、次のように定義されているMessageTypeId
計算列MessageTypeBitFlag
POWER(2, MessageTypeId)
SQL で表現された私のクエリは次のようになります。
bitfield 列と bitflag 列でビットごとの AND を実行することにより、特定の受信者が関心のあるメッセージのみを簡単に選択できます。
問題は、SQL でこれを行っていないことです。これを、NHibernate Criteria API で構築されたかなりリッチなシステムに追加オプションとして追加する必要があります。
NHibernate API を介してこの基準を表現する方法はありますか? API を使用するか、既存の基準に SQL/HQL 句を追加することによってですか?