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.
