Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

NHibernate QueryOver - koleksi dengan terlalu banyak hasil

Saya takut, itu tidak akan berhasil. Berdasarkan desain dan sifat <join> . Sebagaimana dinyatakan dalam dokumentasi:

Cara bagaimana (saya lakukan) memecahkan masalah ini sedikit berbeda. Saya memiliki objek Language , Opsi memiliki kumpulan bahasa

public virtual IList<Language> Languages {get; set;}

Pemetaan misalnya <bag>

<bag name="Languages"  batch-size="25"
  cascade="all-delete-orphan" inverse="true" >
  <key column="option_id" />
  <one-to-many class="Language" />

  <filter name="LanguagFilter" condition=":languageId = LanguageId" />
</bag>

Triknya ada di filter . Ini adalah versi dinamis dari di mana mapping-attribute (18.1. NHibernate filter)

<filter-def name="LanguageFilter" >
  <filter-param name="languageId" type="Int32" />
</filter-def>

Kemudian, kita dapat mengaktifkan filter, untuk semua operasi sesi saat ini. Hanya sekali per permintaan (jika aplikasi web), di dalam beberapa AOP, di mana kita mengetahui id bahasa:

var filter = session.EnableFilter("LanguageFilter");
filter.SetParameter("languageId", theCurrentLanguageIdFromUser);

Dan akhirnya, kita tahu, bahwa kumpulan Bahasa hanya berisi satu record dan kita selalu dapat mengakses .First() . Tidak ada lagi banyak hasil dengan lebih banyak bahasa

Lihat juga:https://stackoverflow.com/a/16625867/1679310 , https://stackoverflow.com/a/18479266/1679310




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipan massal MySQL dari file data CSV

  2. mysql Pada nilai Duplikat di bidang, masukkan baris baru dengan nilai baru

  3. Cara Setup Replikasi MySQL di RHEL, Rocky dan AlmaLinux

  4. MySQL - Pilih kolom dari tabel lain melalui tabel referensi

  5. Cara menentukan perubahan antar baris secara efisien menggunakan SQL