Well there is no class. Tags is a List<string>. I have tested your code
already and it does not work as there is no property with the name 'Tag'. It
cannot resolve it.


On Tue, May 10, 2011 at 1:22 AM, José F. Romaniello
<[email protected]>wrote:

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



-- 
Ramon

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