If you know how to do it with SQL, then go ahead.
Still, I think you domain model might be too broad.
Diego
On Sat, Sep 18, 2010 at 06:07, alexey_baranov <[email protected]> wrote:
> Yes, I see. Thank you!
>
> We have only Parent - Child relation between Obj Entities.
> For example Person and Department may be refferenced like
> Folder->Department->Folder->Department->Department->Person
> the refference way is variant. The following three are correct as any
> other.
> Folder->Depertment->Person
> Folder->Folder->Folder->...->Person
> Person->Department
>
> So we have not any constant relation between Person and his
> Departments.
>
> How can we solve a problem and find Persons wich are not within
> Departments wiht HQL? Mayby we should use ISession.CreateSQLQuery ?
>
> Thanks!
>
> On Sep 17, 5:30 pm, Diego Mijelshon <[email protected]> wrote:
> > You need to map the relationship between Person and Department in order
> to
> > use HQL left joins.
> >
> > Diego
> >
> > On Fri, Sep 17, 2010 at 06:58, alexey_baranov <[email protected]>
> wrote:
> > > Actualy, we need some hql surrogate of left join to find all Persons
> > > wich are not within Departments
> >
> > > var result = sess.CreateQuery(@"
> > > select p
> > > from
> > > Person p, //Person need to be even
> > > if no department exists like with left join in sql
> > > Department d
> > > where
> > > p.Path like d.Path + cast(d.Id as String) + '/%'
> > > and d is null
> > > ")
> >
> > > Thanks!
> >
> > > PS: Department and Person are Entities extended Obj
> >
> > > <?xml version="1.0" encoding="utf-8" ?>
> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> > > assembly="Helpdesk" namespace="Helpdesk">
> > > <class name="Obj" discriminator-value="9">
> > > <id name="Id">
> > > <generator class="native" />
> > > </id>
> > > <discriminator column="Typee" type="Int32"/>
> > > <timestamp name="Modifed"/>
> > > <property name="Path" access="nosetter.camelcase-underscore" not-
> > > null="true"/>
> > > <property name="Name" column="Namee" not-null="true"/>
> > > <property name ="IsFolder" access="nosetter.camelcase-underscore"/
> >
> > > <property name="Note"/>
> > > <property name="Created" not-null="true"/>
> > > <many-to-one name="Owner" column ="Ownerr" />
> > > <many-to-one name ="Parent" access="nosetter.camelcase-underscore"/
> >
> > > <set name="Children" inverse="true">
> > > <key column="Parent"/>
> > > <one-to-many class="Obj"/>
> > > </set>
> > > <set name="Attachments" table="Obj_Attachments" cascade="save-
> > > update">
> > > <key column="Obj"/>
> > > <many-to-many column="Attachment" class="Filee"/>
> > > </set>
> > > </class>
> > > </hibernate-mapping>
> >
> > > <?xml version="1.0" encoding="utf-8" ?>
> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> > > assembly="Helpdesk" namespace="Helpdesk">
> > > <subclass name="Person" extends ="Obj" discriminator-value="0">
> > > <join table="Person">
> > > <key column="Id"/>
> > > <property name="FirstName"/>
> > > <property name ="SecondName"/>
> > > <property name="MiddleName"/>
> > > <property name="Email"/>
> > > <property name ="Phones"/>
> > > <!--
> > > <list name="Phones" table="Person_Phones">
> > > <key column="Ownerr"/>
> > > <index column="Indexx"/>
> > > <element column="Phone" type="String"/>
> > > </list>
> > > -->
> > > </join>
> > > </subclass>
> > > </hibernate-mapping>
> >
> > > <?xml version="1.0" encoding="utf-8" ?>
> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> > > assembly="Helpdesk" namespace="Helpdesk">
> > > <subclass name="Department" extends ="Obj" discriminator-value="32">
> > > <join table="Department">
> > > <key column="Id"/>
> > > <property name ="Address"/>
> > > </join>
> > > </subclass>
> > > </hibernate-mapping>
> >
> > > Thanks!
> >
> > > On Sep 17, 3:17 pm, alexey_baranov <[email protected]> wrote:
> > > > O, I see. We will rewrite query. Another question Is HQL may join
> > > > entities only if there is a refference-way from one to another?
> >
> > > > Thanks!
> >
> > > > On Sep 16, 11:17 pm, Fabio Maulo <[email protected]> wrote:
> >
> > > > > mmm the "path" mentioned in the exception message is not your
> property
> > > > > called "Path" but:
> > > > > left join Department <=== from where come Department ? it is a
> property
> > > of
> > > > > what ?
> > > > > The other error you will find is "on"; "on" is not HQL
> > > > > The other strange thing is: :rootDepartmentPath2 + '%' ; why don't
> do
> > > it in
> > > > > the parameter ?
> >
> > > > > before say "We try to use HQL first time and found exception"
> perhaps
> > > would
> > > > > be more productive to think : "We try to use HQL first time and
> > > perhpas we
> > > > > have not studied it enough".
> >
> > > > > On Thu, Sep 16, 2010 at 1:08 PM, alexey_baranov <
> [email protected]>
> > > wrote:
> > > > > > Hello!
> >
> > > > > > We try to use HQL first time and found exception. What does this
> > > "Path
> > > > > > expected for join!" means ? Path is a string not null property.
> Wwe
> > > > > > try to use this HQL to find Persons within Department
> rootDepartment
> > > > > > and not in subdepartments.
> >
> > > > > > Path expected for join! [
> > > > > > select p
> > > > > > from
> > > > > > Helpdesk.Person p
> > > > > > left join Department d on p.Path like d.Path +
> > > > > > cast(d.Id as String) + '/%'
> > > > > > where
> > > > > > p.Path like :rootDepartmentPath2 + '%'
> > > > > > and d.Path like :rootDepartmentPath2 + '%'
> > > > > > and d is null
> > > > > > ]
> >
> > > > > > Thanks.
> >
> > > > > > --
> > > > > > 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]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>
> >
> > > <nhusers%[email protected]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>
> >
> >
> > > > > > .
> > > > > > For more options, visit this group at
> > > > > >http://groups.google.com/group/nhusers?hl=en.
> >
> > > > > --
> > > > > Fabio Maulo
> >
> > > --
> > > 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]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>
> >
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/nhusers?hl=en.
>
> --
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>
--
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.