Mysql
 sql >> база данни >  >> RDS >> Mysql

NHibernate QueryOver - колекция с твърде много резултати

Страхувам се, че неговият няма да работи. По дизайн и естеството на <join> . Както е посочено в документацията:

Начинът, по който да (аз правя) решаването на този проблем е малко по-различно. Имам обект Language , опцията има колекция от езици

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

Съответствието е например <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>

Номерът е във филтърната . Това е динамична версия на къде mapping-attribute (18.1. NHibernate филтри)

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

След това можем да включим филтъра за всички операции от текущата сесия. Само веднъж на заявка (ако е уеб приложение), в някои AOP, където знаем идентификатора на езика:

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

И накрая, знаем, че колекцията Languages ​​съдържа само един запис и винаги имаме достъп до .First() . Няма повече множество резултати с повече езици

Вижте също: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. Показване на дублирани номера на редове

  2. Вмъквания в MySQL Workbench

  3. Как да вмъкнете обект (повече от 10 свойства) в mysql чрез mybatis въз основа на анотация без списък на всички свойства

  4. Изпращане на HTML код чрез JSON

  5. ГРЕШКА 2003 (HY000):Не мога да се свържа с MySQL сървър на '127.0.0.1' (111)