ホームページ > バックエンド開発 > C++ > NHibernate を使用して最新の成功した応答のみを含むリクエストを取得するにはどうすればよいですか?

NHibernate を使用して最新の成功した応答のみを含むリクエストを取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-15 10:20:44
オリジナル
580 人が閲覧しました

How to Retrieve Requests with Only the Latest Successful Response Using NHibernate?

NHibernate を使用して HasMany 参照をクエリする: 最新の成功した応答を含むリクエストを取得します

この記事では、最新の応答 (タイムスタンプ属性に基づく) が成功したすべてのリクエストを取得するクエリの構築について説明します。

次のソリッド モデルを考えてみましょう:

<code class="language-c#">public class Request
{
    public virtual IList<Response> Responses { get; set; }
}

public class Response
{
    public virtual DateTime Timestamp { get; set; }
    public virtual bool Success { get; set; }
}</code>
ログイン後にコピー

クエリ構築:

望ましい結果を得るために、サブクエリを利用する NHibernate QueryOver クエリを作成できます。

<code class="language-c#">// 响应子查询,查找最大日期响应
var maxSubquery = QueryOver.Of<Response>()
    .SelectList(l => l
        .SelectGroup(item => item.RequestId)
        .SelectMax(item => item.Timestamp))
    .Where(item => item.RequestId == response.RequestId)
    .Where(Restrictions.EqProperty(
        Projections.Max<Response>(item => item.Timestamp),
        Projections.Property(() => response.Timestamp)));

// 响应子查询,查找具有最大日期的成功响应
var successSubquery = QueryOver.Of<Response>()(() => response)
    .Select(res => res.RequestId)
    .WithSubquery
    .WhereExists(maxSubquery)
    .Where(success => success.Success == true);

// 基于成功响应过滤的请求查询
var query = session.QueryOver<Request>();
query.WithSubquery
    .WhereProperty(r => r.ID)
    .In(successSubquery);

var list = query
    .List<Request>();</code>
ログイン後にコピー

クエリ命令:

  • maxSubquery 各リクエストの最大応答日を見つけます。
  • successSubquery 応答をフィルタリングして、成功し、それぞれのリクエストの最大日付を持つもののみを含めます。
  • メイン クエリは、successSubquery で識別された成功した応答の有無に基づいてリクエストをフィルタリングします。

あるいは、クエリを簡素化するために、応答に「IsActive」プロパティを設定することを検討してください。

以上がNHibernate を使用して最新の成功した応答のみを含むリクエストを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート