問題タブ [icriteria]
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 - ドメインオブジェクトのリストを返すNhibernateNullReferenceException
以下は私が使用しているコードです。私にはかなり単純なようです。しかし、最後の行であるreturnステートメントでNullReferenceExceptionが発生します。スタックトレースは次のとおりです。
FailedSystem.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。NHibernate.Criterion.Junction.ToSqlString(ICriteria基準、ICriteriaQuery基準クエリ、IDictionary 2
2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary
enabledFilters)でNHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadableパーシスター、CriteriaQueryTranslatorトランスレーター、ISessionFactoryImplementorファクトリー、CriteriaImpl基準、文字列rootEntity2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary
NHibernate.Impl.SessionImpl.List(CriteriaImpl基準、IList結果)でNHibernate.Impl.CriteriaImpl.List(IList結果)でNHibernate.Impl.CriteriaImpl.List()で
c# - NHibernate Criteria APIを使用して、カウントとともに特定のデータセットを選択します
NHibernateで永続化するために次のドメインを設定しています。
ルートアグリゲートとしてPaperConfigurationを使用しています。
特定のTierおよびAcademicYearConfigurationのすべてのPaperConfigurationオブジェクトを選択したいと思います。これは、次の例のように非常にうまく機能します。
(おそらく、これを行うためのより良い方法があります)。
ただし、各PaperConfigurationに存在するReferenceMaterialの数も知る必要があり、同じ呼び出しで取得したいと思います。HQLを避けてください-私はすでにそれのためのHQLソリューションを持っています。
これが予測の目的であり、この質問はアイデアを示唆していることを私は知っていますが、それを機能させることはできません。
IList<ReferenceMaterial> ReferenceMaterials
ReferenceMaterialCountの代わりに次のような考え方をしているPaperConfigurationViewがあります。
残念ながら、これは機能しません。私は何が間違っているのですか?
次の簡略化されたクエリ:
このかなり予想外のSQLを作成します。
上記のクエリはADO.NETエラーで失敗します。これは、group byまたはcount(this_.Id)ではなくcount(referencem1_.Id)が欠落しているため、明らかに正しいSQLではないためです。
NHibernateマッピング:
hql - NHibernate でこの種のクエリを取得する方法: SELECT DISTINCT FileName From CustomerFile WHERE name = ' ' AND timeframe = ''
Stackoverflow の他の同様の種類の HQL にリダイレクトしないでください。私にはうまくいかなかったからです。あなたの指示に本当に感謝しています。ありがとう。
ICriteria API を使用して Nhibernate でこの種のクエリを再現する:
c# - 継承によるHibernate検索
私はそのようなクライアントクラスを持っています:
そして、私は2人の子クラスを持っています:
したがって、私のクライアントは PersonType1 または PersonType2 である可能性があります...
クライアント検索を実行する必要があります...その検索のパラメーターはatt1、att2、att3、att4、attx、attyです...しかし、これらはすべてオプションです...
ICriteria でその検索を実行しようとしていますが、その継承スキームを指定する方法がわかりません...
nhibernate - Nhibernate 基準クエリ - コレクションの順序付け
Person クラスがあります。person クラスには、Friends (Person オブジェクトも) のコレクションが含まれています。person クラスには、LatestLogin 時間である LatestLogin プロパティもあります。
特定の人について、LatestLogin の降順で並べられた最初の 10 人の友人を返したいと考えています。
HQL 私は問題ありません: 人から友達を選択します person 内部参加 person.Friends friends where person = :person order by friends.LatestLogin desc
これを Criteria Query に記述するにはどうすればよいですか? 含まれている人物オブジェクトは必要ありません。LatestLogin によって並べ替えられた人物の友人のリストだけです。
nhibernate - NHibernate Lambda 拡張機能 - コレクションの関連付けのイーガー ロード
ソーシャル ネットワーキング サイトの基準クエリがあります。Person オブジェクトには、Friends (同じく person オブジェクト) のコレクションがあります。クエリは最初の N 人の友人を取得しますが、関連付けられたオブジェクト MainProfileImage とそれに続く関連付けられたオブジェクト MediumThumbnail も熱心に読み込みたいと考えています。
これは HQL で簡単に実行できます。
これが私の基準の取り組みです。何らかの理由で、これは何も返されません!
nhibernate - NHibernate Criteria クエリから注文を削除する
結果のページを表示するために使用している条件クエリがあります。また、すべてのアイテムの合計数を取得する必要があります。結果のページング用とカウント用の 2 つのクエリを使用するのではなく (.AddOrder() 以外は同一であるため)
明らかに、「列 "dbo.Person.ordercolumn" を含む CountQuery barfs は、集約関数にも GROUP BY 句にも含まれていないため、ORDER BY 句では無効です。」
これは理にかなっているので、基本的にはこのようなことをしたいと思っています。
このようなことをする方法はありますか?そのため、ページング用とカウント用の 2 つのクエリが重複する「リスク」を回避できます。明らかに、いずれかのクエリに対する変更は、もう一方にミラーリングする必要があり、これは私が好まないリスクです。あなたならどうしますか?
nhibernate - NHibernate 基準クエリ - 個別の選択
私は Person エンティティが属する人に国を持っています。人がいるすべての異なる国を選択したいと思います。HQLで簡単
Person p から個別の p.Country を選択
基準クエリを使用してこれを行うにはどうすればよいですか?
nhibernate - NHibernate Criteria クエリ - 結合されたエンティティと異なるものを選択
Person エンティティがあります。すべての人に国があります。人がいる国をすべて選択したいと思います。この Criteria Query は、すべての個別の CountryID を返します
IDだけでなく、Countryエンティティに参加してフェッチするように変更するにはどうすればよいですか?