We had the similar problem with N+1 select. In our case it created separate select for all not found associations (many-to-one). We used Guid as a key so it was always 0000-...... We solve this problem with a simple "null" in DB. Apparently Nhibernate checks all of not found association again with separate select if the value is diferent than null. even thou it was explicitly sad not-found = "Ignore".....
hope it helps you. On Jul 29, 9:05 am, Mitjast <[email protected]> wrote: > Did You solve this problem? > > On 10 jul., 17:59, "Cesar Sanz" <[email protected]> wrote: > > > Sure... > > > Operator > > > <?xml version="1.0" encoding="utf-16"?> > > <hibernate-mapping auto-import="true" default-lazy="false" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns="urn:nhibernate-mapping-2.2"> > > <class name="Sms.Data.Domain.Operator, Sms.Data.Domain" table="operators" > > schema="dbo" lazy="true"> > > <id name="Id" access="property" column="Id" type="Int32" > > unsaved-value="0"> > > <generator class="native"></generator> > > </id> > > <property name="Name" access="property" type="String"> > > <column name="Name"/> > > </property> > > <bag name="Clients" access="property" table="clients" lazy="false" > > inverse="true" cascade="all-delete-orphan"> > > <key column="Operator" /> > > <one-to-manyclass="Sms.Data.Domain.Client, Sms.Data.Domain" /> > > </bag> > > </class> > > </hibernate-mapping> > > > Client > > > <?xml version="1.0" encoding="utf-16"?> > > <hibernate-mapping auto-import="true" default-lazy="false" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns="urn:nhibernate-mapping-2.2"> > > <class name="Sms.Data.Domain.Client, Sms.Data.Domain" table="clients" > > schema="dbo"> > > <id name="ClientId" access="property" column="Id" type="Int32" > > unsaved-value="0"> > > <generator class="native"></generator> > > </id> > > <property name="AreaCode" access="property" type="String"> > > <column name="AreaCode"/> > > </property> > > <property name="Cif" access="property" type="String"> > > <column name="Cif"/> > > </property> > > <property name="Identification" access="property" type="String"> > > <column name="Identification"/> > > </property> > > <property name="FirstName" access="property" type="String"> > > <column name="FirstName"/> > > </property> > > <property name="LastName" access="property" type="String"> > > <column name="LastName"/> > > </property> > > <property name="LastName2" access="property" type="String"> > > <column name="LastName2"/> > > </property> > > <property name="Email" access="property" type="String"> > > <column name="Email"/> > > </property> > > <property name="Notify" access="property" type="Boolean"> > > <column name="Notify"/> > > </property> > > <property name="Status" access="property"> > > <column name="Status"/> > > </property> > > <property name="ModifiedBy" access="property" type="String"> > > <column name="ModifiedBy"/> > > </property> > > <property name="CreatedAt" access="property" type="DateTime"> > > <column name="Created"/> > > </property> > > <property name="ModifiedAt" access="property" type="DateTime" > > insert="false"> > > <column name="Modified"/> > > </property> > > <property name="CellPhone" access="property" type="String"> > > <column name="CellPhone"/> > > </property> > > <many-to-onename="Operator" access="property" > > class="Sms.Data.Domain.Operator, Sms.Data.Domain" > > column="Operator"fetch="join" /> > > <bag name="Products" access="property" table="products" lazy="true" > > inverse="true" cascade="all-delete-orphan"> > > <key column="ClientId" /> > > <one-to-manyclass="Sms.Data.Domain.Product, Sms.Data.Domain" /> > > </bag> > > </class> > > </hibernate-mapping> > > > ----- Original Message ----- > > From: "Eyston" <[email protected]> > > To: "nhusers" <[email protected]> > > Sent: Friday, July 10, 2009 9:35 AM > > Subject: [nhusers] Re: HQL Join Problem > > > Can you show mappings? > > > On Jul 10, 11:12 am, spiralni <[email protected]> wrote: > > > Hi.. > > > > I'd like to perform a join between two entities.. > > > > [Operator] hasmany[Client] > > > > I can do this with this SQL sentence > > > >selectc.*, o.name from clients c join operators o on c.operator = > > > o.id > > > > I would like to do this same query using HQL, for this I use this HQL > > > query > > > > "from Client c joinfetchc.Operator where c.Status = :status and > > > c.Cif in (:cifs)" > > > > The HQL query results in > > > >select(fields names goes here) > > > from dbo.clients client0_ inner join dbo.operators operator1_ on > > > client0_.Operator = operator1_.Id > > > where (client0_.Status = 1) and (client0_.Cif in (12345670 , > > > 12345678 )) > > > > which is ok, but also execute a new query for every operator id that I > > > have (in my case I have 2 operators) > > > >SELECT(fields names goes here) > > > FROM dbo.clients clients0_ > > > WHERE clients0_.Operator = 2 > > > >SELECT(fields names goes here) > > > FROM dbo.clients clients0_ > > > WHERE clients0_.Operator = 1 > > > > Which is not desirable... Why is this happening..? I just want to > > > execute the first query.. > > > > Hope you can help me.. > > > > Thanx --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
