Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Mereka Menggunakan NHibernate QueryOver?
Mendapatkan semula Permintaan dengan Respons Berjaya Terkini menggunakan NHibernate QueryOver
Contoh ini menunjukkan pertanyaan NHibernate QueryOver yang canggih untuk mendapatkan semula semua Request
entiti, masing-masing dikaitkan dengan Response
terbaharunya yang berjaya. Entiti Request
mempunyai koleksi Response
entiti. Kami menyasarkan untuk mengambil Request
sahaja bersama dengan Response
terbaharunya yang berjaya, berdasarkan Response
Timestamp
.
Penyelesaian di bawah menggunakan subkueri bersarang untuk mencapai perolehan kompleks ini. Pendekatan yang lebih mudah mungkin boleh dilakukan jika entiti Response
menyertakan bendera "IsActive".
Berikut ialah pelaksanaan NHibernate QueryOver:
<code class="language-c#">// Reference to a Response entity Response responseAlias = null; // Subquery to find the maximum DateTime for each RequestId var maxTimestampSubquery = QueryOver.Of<Response>(() => responseAlias) .SelectList(l => l .SelectGroup(() => responseAlias.RequestId) .SelectMax(() => responseAlias.DateTime) ); // Subquery to find successful Responses with the maximum DateTime var successfulResponseSubquery = QueryOver.Of<Response>(() => responseAlias) .Where(() => responseAlias.Success == true) .WithSubquery .WhereProperty(() => responseAlias.DateTime).In(maxTimestampSubquery); // Main query to retrieve Requests with successful Responses var query = session.QueryOver<Request>(); query.WithSubquery .WhereProperty(r => r.Id) .In(successfulResponseSubquery.Select(r => r.RequestId)); var requests = query.List<Request>();</code>
Kod ini menggunakan subkueri untuk mengenal pasti entiti Response
yang berkaitan dengan cekap dan memautkannya kepada entiti Request
yang sepadan. maxTimestampSubquery
mencari cap masa terbaharu untuk setiap permintaan, dan successfulResponseSubquery
menapis untuk respons yang berjaya yang sepadan dengan cap masa tersebut. Pertanyaan utama kemudian mendapatkan semula entiti Request
berdasarkan ID yang ditemui dalam subkueri respons yang berjaya. Ingat untuk menggantikan Request
dan Response
dengan nama entiti sebenar anda dan laraskan nama harta dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Mereka Menggunakan NHibernate QueryOver?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!