問題タブ [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 投票する
2 に答える
4988 参照

nhibernate - 流暢なNHibernateと、複数の結合を必要とするクエリでの1対多の関係のフィルタリング?

私は最近NHibernateを使い始めましたが、さらに下に概説したドメインモデルの実装に問題があります。

私が探しているのは、特定のデータストア上のアイテムとそのアイテムデータコレクションの間の関係をフィルタリングする方法です。データストアはグローバルであり、その場合は常に返されるか、(アプリケーションインスタンスに基づいて)ユーザーIDに固有です。

SQLでは、これは単純なクエリを使用して実行できます。

データベース構造:

ドメインモデル:

基本的な理論は、データストアごとに1つのItemData行をフェッチし、それぞれのデータストアの重みフィールドの各列を結合することです(重みで並べ替えられた最初の非null値)。

NHibernateでこれを達成できるかどうか、またどのように達成できるかについての洞察をいただければ幸いです。

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

nhibernate - 条件クエリからのnhibernateNamedQuery->ヘルプが必要

作業基準クエリを名前付きクエリに変換しようとしていますが、構文が正しくありません。hqlバージョンでは、typeパラメーターとidパラメーターの両方を指定する必要があるようです。

クエリは、ANYでマップされたクラスに対して行われます(以下も)

誰かが私に構文を正しくするための手を差し伸べることができますか?

乾杯、
ベリール

作業基準クエリ

任意のマッピング(これは機能します!)

NAMED QUERY SO FAR(機能していません)

これはhql構文だと思いますが、エラーメッセージにパラメータがありません

アップデート

この組み合わせは実行されますが、間違った答えが返されます。まだ必要なものに近いのか遠いのかわからない

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

nhibernate - NHibernate-ICriteriaのヘルプ

次のSQLクエリをNHibernateのICriteriaに変換しようとしています。

これらは両方ともNHibernateでModelsおよびModelTypeと呼ばれるクラスにマップされます。ICriteria.Listは、ModelTypeタイプのリストを返す必要があります。

ありがとう

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

nhibernate - 言葉のように冬眠する基準

私は休止状態の基準でこれを行いたい:

結果は次のようになります。

ユーザー インターフェイスから文字列 'Re Wi' として検索パラメーターがあります。

最善のアプローチは何ですか?文字列を分割して最後に % を置き、文字列配列を結合して、次のようになります。

または、個々の部分 (単語の先頭) をいくつかの条件式に追加できますか?

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

nhibernate - NHibernate 基準の制限と式

インターネットでNHibernate Criteria APIクエリの例を検索すると、制限を使用する例と式を使用する例があります。これら2つの違いは何ですか?

例えば:

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

nhibernate - Criteria API とディクショナリ/マップの左結合

私は次のクラスを持っています:

これらは、テーブル Item、ItemTag、および ItemLocal にマップされます。基準APIを介して次のクエリを作成したい:

しかし、nhibernate 基準 API で左結合を実行する方法がわかりません。特に、デフォルトの言語選択を使用する場合。

どんな助けでも大歓迎です。

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

nhibernate - 特定のSQLのHibernate基準をどのように記述しますか?

ICriteriaで同様のSQLを作成する必要があります。

テーブル:

1Lvl-2Lvl-3Lvl

SQL:

具体的な質問で申し訳ありませんが、Hibernateを使用したプロジェクトを従業員から継承したため、Hibernateの基準を理解できません。

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

nhibernate - NHibernate 単一クエリによる階層データの取得

列が以下のようなDBにテーブルがあります。

Hibernate のマッピングは以下のようになります。

以下のように NHIbernate にクエリを実行すると、子コレクションが適切に入力されたオブジェクトを正常に取得できます。

私が直面している問題は、非常にコストがかかると思われるオブジェクトを埋めるためにクエリが実行される各子に対してです。これを簡単にする方法はありますか?たとえば、単一のクエリで完全な関係を取得できるはずです。

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

.net - 不適切な nHibernate コレクションの初期化を解決する方法

nHibernate3; EAV データ スキーマから 4xxx レコードを取得します。nHibernate または .NET がこれらのコレクションを初めて初期化するとき、深刻なペナルティが発生します。後続の呼び出しは、より効率的に実行されるように見えます。SQL Server Management Studio で同じクエリを実行すると、返される時間が短くなることが予想されます。

.hbm.xml の代わりに Fluent およびランタイム マッピングを使用する。シリアル化されたマッピングがここで役立つかどうか知りたいですか?

nHibernate Profiler と log4net のログ記録では、あまり先に進むことができなかったようです。このプロセスでは、合計で 140,000 ほどのエンティティがハイドレートされます。

コレクションの初期化ペナルティを示す dotTrace パフォーマンス トレースのスクリーンショットを添付します。 遅い nHibernate コレクションの初期化の dotTrace

結合と熱心なフェッチタイプを試してみましたが、明らかな結果はありませんでしたが、それらを正しく実装したことを100%確信しているわけではありません-親だけを指定する必要がありますか、それとも子テーブルにもフラグを立てる必要がありますか?

web.config 経由でリフレクション オプティマイザーを有効にすると (私は思う): リフレクション オプティマイザを有効にした場合

これは、ほとんどの時間が費やされる場所です。

これは単にこれを行う拡張メソッドです:

マッピング:

残念ながら .Future を使用しても、同様の結果が得られるようです。これが新しいトレースです。とりあえずリリースに切り替え、重要なプロジェクトでは x64 に切り替えたので、時間は短くなりましたが、比率はほとんど同じです。同様に.Eager:

dotTrace - .Future() を使用した、x64 をターゲットとするリリース モード

.Eager と .Future を配置して生成された SQL:

this_.ProductID を ProductID0_1_ として、this_.ProductNumber を ProductN2_0_1_ として、this_.ProductName を ProductN3_0_1_ として、this_.InsertedDateTime を Inserted4_0_1_ として、this_.UpdatedDateTime を UpdatedD5_0_1_ として、this_.ProductGUID を ProductG6_0_1_ として、this_.ProductTypeId を ProductT7_0_1_ として、producttyp2_.ProductType_ID を Product_typ6 として選択します。 .ProductTypeName as ProductT2_6_0_ FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID;

productatt0_.ProductId を ProductId2_ として、productatt0_.ProductAttributeID を ProductA1_2_ として、productatt0_.ProductAttributeID を ProductA1_2_1_ として、productatt0_.PositionNumber を Position2_2_1_ として、productatt0_.ValueText を ValueText2_1_ として、productatt0_.ValueBinary を ValueBin4_2_1_ として、productatt0_.ProductID を ProductID2_1 .ExpirationDateTime as Expirati7_2_1_, productatt0_.IsCurrentIndicator as IsCurren8_2_1_, productatt0_.OperationCode as Operatio9_2_1_, productatt0_.OperationDateTime as Operati10_2_1_, productatt0_.OperationSystemName as Operati11_2_1_, productatt0_.OperationUserName as Operati12_2_1_, productatt0_.LastUserPriority as LastUse13_2_1_, attribute1_.AttributeId as Attribut1_1_​​0_, attribute1_.AttributeName を Attribut2_1_0_ として、attribute1_.DisplayName を DisplayN3_1_0_ として、attribute1_.DataTypeName を DataType4_1_0_ として、attribute1_.ConstraintText を Constrai5_1_0_ として、attribute1_.ConstraintMin を Constrai6_1_0_ として、attribute1_.ConstraintMax を Constrai7_1_0_ として、attribute1_.ValuesMin を ValuesMin1_0_ として、attribute1_Max.1Values として attribute1_Max.1Values としてPrecision1_0_ FROM ProductAttribute productatt0_ inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_.AttributeId WHERE (productatt0_.IsCurrentIndicator=1) および productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)ConstraintText as Constrain5_1_0_、attribute1_.ConstraintMin as Constrai6_1_0_、attribute1_.ConstraintMax as Constrai7_1_0_、attribute1_.ValuesMin as ValuesMin1_0_、attribute1_.ValuesMax as ValuesMax1_0_、attribute1_.Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_ (AttributeId=attribute1_. productatt0_.IsCurrentIndicator=1) および productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)ConstraintText as Constrain5_1_0_、attribute1_.ConstraintMin as Constrai6_1_0_、attribute1_.ConstraintMax as Constrai7_1_0_、attribute1_.ValuesMin as ValuesMin1_0_、attribute1_.ValuesMax as ValuesMax1_0_、attribute1_.Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute attribute1_ on productatt0_.AttributeID=attribute1_ (AttributeId=attribute1_. productatt0_.IsCurrentIndicator=1) および productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute1_ on productatt0_.AttributeID=attribute1_.AttributeId WHERE (productatt0_.IsCurrentIndicator=1) および productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.製品タイプ ID)Precision1_0_ FROM ProductAttribute productatt0_ inner join Attribute1_ on productatt0_.AttributeID=attribute1_.AttributeId WHERE (productatt0_.IsCurrentIndicator=1) および productatt0_.ProductId in (select this_.ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.製品タイプ ID)

productgro0_.ProductId を ProductId1_ として、productgro0_.ProductGroupId を ProductG1_1_ として、productgro0_.ProductGroupId を ProductG1_3_0_ として、productgro0_.ProductId を ProductId3_0_ として、productgro0_.GroupId を GroupId3_0_ として選択します。 ProductID FROM Product this_ inner join ProductType producttyp2_ on this_.ProductTypeId=producttyp2_.ProductTypeID)

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

nhibernate - NHibernate Criteria を使用してこのクエリを作成するにはどうすればよいですか

私は NHibernate を初めて使用し、NHibernate の Criteria エンジンを使用して SQL を表現する最良の方法を見つけるのに苦労しています。オブジェクト モデルの基本的な説明を次に示します。

基礎となるテーブルがどのように見えるかをクラスから推測でき、すべての NH は EntityBase 抽象クラスにあります。

基本的に、特定の会社が所有する、またはその会社の誰かのために UserAssignments を持つすべてのプロジェクトをプルしたいと考えています。SQLでそれを行う方法は次のとおりです。

私は DetachedCriteria を使用していますが、UserAssignment のユーザーを会社に一致させるだけでは機能しません。ましてや、割り当てと所有者の両方を一致させることはできません。私がこれを試したとき:

「プロパティを解決できませんでした: TestProject.Domain.UserAssignment の User.Company.Id」というエラーが表示されます。

誰でも助けることができますか?