sql >> Databasteknik >  >> RDS >> Mysql

NHibernate QueryOver - samling med för många resultat

Jag är rädd att hans inte kommer att fungera. Genom design och arten av . Som anges i dokumentationen:

Hur man (jag gör) lösa det här problemet är lite annorlunda. Jag har ett objekt Language , Alternativet har en samling språk

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

Mappningen är till exempel

<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>

Tricket ligger i filtret . Det här är en dynamisk version av var mappningsattribut (18.1. NHibernate-filter)

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

Sedan kan vi slå på filtret för alla operationer i den aktuella sessionen. Endast en gång per begäran (om webbapp), i någon AOP, där vi känner till språk-id:

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

Och slutligen vet vi att samlingen Languages ​​bara innehåller en post och vi kan alltid komma åt .First() . Inga fler resultat med fler språk

Se även:https://stackoverflow.com/a/16625867/1679310 , https://stackoverflow.com/a/18479266/1679310




  1. Hur man installerar phpMyAdmin på sin egen app

  2. Hur dumpar man data för stora objekt från Postgres 9.4 och sedan importerar den till Postgres8.x?

  3. Oracle Fuzzy textsökning

  4. Hur man väljer alla kolumner och ett antal(*) i samma fråga