Adding a JIRA ticket about the documentation issue. The proposed patch is
well welcome.
Thanks.

2009/11/18 Diego Mijelshon <[email protected]>

> It seemed weird that *CreateCriteria<IFoo>()* always works, but 
> *CreateQuery("from
> IFoo")* requires the use of <import> (and, strange enough, *CreateQuery("from
> System.Object")* works always).
>
> That wasn't clear to me from the doc (
> http://nhforge.org/doc/nh/en/index.html#queryhql-polymorphism), and after
> implementing what Germán suggested, I assumed it wasn't possible for the HQL
> parser to know what type I'm referring to if it's not declared, while
> Criteria gets the corresponding Type instance.
>
> Now, after seeing it all, it's a perfectly reasonable behavior. Only the
> docs should be more specific.
> How can I contribute to that? I feel like it's time to start giving back to
> NH :-)
>
>    Diego
>
>
>
> On Wed, Nov 18, 2009 at 16:59, Fabio Maulo <[email protected]> wrote:
>
>> where is the news? I don't understand
>> http://nhforge.org/doc/nh/en/index.html#mapping-declaration-import
>>
>> 2009/11/18 Diego Mijelshon <[email protected]>
>>
>> Thanks Germán!
>>> That did the trick.
>>>
>>> Strange behavior in HQL, though.
>>> It has to be an implementation detail (i.e. not easy to "guess" the type
>>> if there are no references to it)
>>> Fabio, is that it?
>>>
>>>    Diego
>>>
>>>
>>>
>>> On Wed, Nov 18, 2009 at 16:25, Germán Schuager <[email protected]>wrote:
>>>
>>>> http://blog.schuager.com/2008/12/polymorphic-query-using-interfaces.html
>>>>
>>>> On Wed, Nov 18, 2009 at 4:20 PM, Diego Mijelshon <
>>>> [email protected]> wrote:
>>>>
>>>>> According to the docs, querying on IFoo should return instances from
>>>>> all the types that implement IFoo, even if there's no reference to IFoo in
>>>>> the mappings.
>>>>>
>>>>> Here's what I'm trying to map:
>>>>>
>>>>> *public interface IFoo { int Foo { get; set; } }*
>>>>> *public class X : IFoo { public virtual int Foo { get; set; } }*
>>>>> *public class Y : IFoo { public virtual int Foo { get; set; } }*
>>>>> *
>>>>> *
>>>>> *<class name="X">*
>>>>> * **<id column="id" type="int">*
>>>>> * **<generator class="identity"/>*
>>>>> * **</id>*
>>>>> * **<property name="Foo"/>*
>>>>> *</class>*
>>>>> *<class name="Y">*
>>>>> * **<id column="id" type="int">*
>>>>> * **<generator class="identity"/>*
>>>>> * **</id>*
>>>>> * **<property name="Foo"/>*
>>>>> *</class>*
>>>>>
>>>>> But when I try to CreateQuery("from IFoo"), I get an exception:
>>>>>
>>>>> *Unhandled Exception: NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:
>>>>> IFoo is not mapped [from IFoo]*
>>>>> *   at
>>>>> NHibernate.Hql.Ast.ANTLR.SessionFactoryHelperExtensions.RequireClassPersister(String
>>>>> name)*
>>>>> *   at
>>>>> NHibernate.Hql.Ast.ANTLR.Tree.FromElementFactory.AddFromElement()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.Tree.FromClause.AddFromElement(String
>>>>> path, IASTNode alias)*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.CreateFromElement(String
>>>>> path, IASTNode pathNode, IASTNode alias, IASTNode propertyFetch)*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElement()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElementList()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromClause()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.unionedQuery()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.query()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.selectStatement()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.statement()*
>>>>> *   at NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate()*
>>>>> *   at
>>>>> NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Analyze(HqlParseEngine 
>>>>> parser,
>>>>> String collectionRole)*
>>>>> *   at
>>>>> NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile(IDictionary`2
>>>>> replacements, Boolean shallow, String collectionRole)*
>>>>> *   at
>>>>> NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Compile(IDictionary`2
>>>>> replacements, Boolean shallow)*
>>>>> *   at NHibernate.Engine.Query.HQLQueryPlan..ctor(String hql, String
>>>>> collectionRole, Boolean shallow, IDictionary`2 enabledFilters,
>>>>> ISessionFactoryImplementor factory)*
>>>>> *   at NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(String
>>>>> queryString, Boolean shallow, IDictionary`2 enabledFilters)*
>>>>> *   at NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(String
>>>>> query, Boolean shallow)*
>>>>> *   at NHibernate.Impl.AbstractSessionImpl.CreateQuery(String
>>>>> queryString)*
>>>>>
>>>>> What am I doing wrong?
>>>>>
>>>>>    Diego
>>>>>
>>>>> --
>>>>> 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]<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.
>>>
>>
>>
>>
>> --
>> 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]>
>> .
>> 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.
>



-- 
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].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.


Reply via email to