something like this?

var entities = s.CreateCriteria<Entity>()
    .CreateAlias("Tags", "t").Add( Restrictions.eq("t.Tag", "foo") )
    .List<Entity>();


2011/5/9 Ramon Smits <[email protected]>

>
> I am having the following entity + mapping:
>
> public class Entity
> {
>     public virtual int Id { get; set; }
>     public virtual ICollection Tags { get; set; }
> }
>
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>                    assembly="Test"
>                    namespace="Test">
> <class Entity">
> <id name="Id"/>
>  <set name="Tags" table="WebcastTag">
> <key column="WebcastId"/>
>  <element column="Tag"/>
> </set>
> </class>
> </hibernate-mapping>
>
>
> I would like to query for the existing of a tag via either the Criteria api
> or the query over api but cannot seem to get it working. HQL and Linq do
> work but cannot be used here as this is part of a very huge search query
> that I rather keep in as a criteria api. I can select the tags via the
> criteria api but I cannot query on it. I found some web pages mentioning
> Restrictions.Sql but it is not available in NHibernate v3.1.0.4000 which is
> the version that I am using.
>
> // Linq query on tag
>
> (from x in Session.Query<Entity>() where x.Tags.Contains("test") select
> x).ToArray();
>
>
> // Linq select all tags
>
> (from x in Session.Query<Entity>() from t in x.Tags select t).ToArray();
>
>
> // Hql query on tag
>
> Session
>     .CreateQuery("from Webcast w join w.Tags t where t = :tag")
>     .SetString("tag", "test")
>     .List();
>
>
> // Hql select all tags
>
> Session
>     .CreateQuery("select distinct t from Webcast w join w.Tags t")
>     .List();
>
>
> // Criteria api select all tags
>
> Session
>     .CreateCriteria<Entity>("w")
>     .CreateCriteria("Tags", "t")
>     .SetProjection(
>         Projections.SqlProjection("Tag", new[] { "Tag" },
>         new[] { NHibernate.NHibernateUtil.String }))
>     .List();
>
> I
>
> --
> 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.
>

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

Reply via email to