Ok, does this query work in HQL?
2013/5/30 Diego Mijelshon <[email protected]> > Alex - that's what the NHibernate.NodaTime project is about! :-) > I'll wait 'til you re-read my original email... > ...ok, we're back :-) > So, the problem is, my type works fine for most operations (schema > creation, CRUD, HQL, and LINQ queries that include the properties as > scalar). But aggregations fail because the tree includes an "HqlIdent", > which I have no idea what represents, but is hardcoded for primitive types. > > > On Wed, May 29, 2013 at 8:34 PM, Alexander I. Zaytsev <[email protected]>wrote: > >> I mean create a IUserType to handle NodaTime and register it in mapping. >> >> Regards, >> Alex >> >> >> 2013/5/29 Diego Mijelshon <[email protected]> >> >>> Register where, Alex? >>> >>> >>> On Tue, May 28, 2013 at 7:31 PM, Alexander I. Zaytsev >>> <[email protected]>wrote: >>> >>>> Hi Diego, >>>> >>>> Probably you need to register usertype for nodatime. >>>> >>>> Regards, >>>> Alex >>>> >>>> >>>> 2013/5/29 Diego Mijelshon <[email protected]> >>>> >>>>> session.Query<Foo>().Max(x => x.Date); >>>>> >>>>> This is the full code of the method I did not commit in >>>>> LocalDateFixture: >>>>> >>>>> >>>>> [Test] >>>>> public void ValuesCanBeRetrievedFromLinqQueries() >>>>> { >>>>> object id; >>>>> using (var session = sessionFactory.OpenSession()) >>>>> using (var tx = session.BeginTransaction()) >>>>> { >>>>> id = session.Save(new Foo { Date = someDate }); >>>>> tx.Commit(); >>>>> } >>>>> using (var session = sessionFactory.OpenSession()) >>>>> using (var tx = session.BeginTransaction()) >>>>> { >>>>> var maxDate = session.Query<Foo>().Max(x => x.Date); >>>>> Assert.AreEqual(someDate, maxDate); >>>>> } >>>>> } >>>>> >>>>> >>>>> Thanks >>>>> Diego >>>>> >>>>> >>>>> On Mon, May 27, 2013 at 11:13 PM, Alexander I. Zaytsev < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Diego, >>>>>> >>>>>> Can you please provide a query? >>>>>> >>>>>> Regards, >>>>>> Alexander >>>>>> >>>>>> >>>>>> 2013/5/28 Diego Mijelshon <[email protected]> >>>>>> >>>>>>> Hi guys. >>>>>>> >>>>>>> I'm trying to implement some NodaTime mapping support for NH. >>>>>>> This is in a proof-of-concept state now, but there's already a Nuget >>>>>>> package, NHibernate.NodaTime. You can check it out. >>>>>>> Here's one of the first roadblocks I've found: when trying to query >>>>>>> using LINQ aggregate methods, I run into the following exception: >>>>>>> >>>>>>> System.NotSupportedException : Don't currently support idents of >>>>>>> type LocalDate >>>>>>> at NHibernate.Hql.Ast.HqlIdent..ctor(IASTFactory factory, Type >>>>>>> type) >>>>>>> at NHibernate.Hql.Ast.HqlCast..ctor(IASTFactory factory, >>>>>>> HqlExpression expression, Type type) >>>>>>> at NHibernate.Hql.Ast.HqlTreeBuilder.Cast(HqlExpression >>>>>>> expression, Type type) >>>>>>> at >>>>>>> NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitNhMax(NhMaxExpression >>>>>>> expression) >>>>>>> at >>>>>>> NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitExpression(Expression >>>>>>> expression) >>>>>>> at >>>>>>> NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.Visit(Expression >>>>>>> expression) >>>>>>> at >>>>>>> NHibernate.Linq.Visitors.SelectClauseVisitor.VisitExpression(Expression >>>>>>> expression) >>>>>>> at NHibernate.Linq.Visitors.SelectClauseVisitor.Visit(Expression >>>>>>> expression) >>>>>>> at >>>>>>> NHibernate.Linq.Visitors.QueryModelVisitor.VisitSelectClause(SelectClause >>>>>>> selectClause, QueryModel queryModel) >>>>>>> at Remotion.Linq.Clauses.SelectClause.Accept(IQueryModelVisitor >>>>>>> visitor, QueryModel queryModel) >>>>>>> at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel >>>>>>> queryModel) >>>>>>> at NHibernate.Linq.Visitors.QueryModelVisitor.Visit() >>>>>>> at >>>>>>> NHibernate.Linq.Visitors.QueryModelVisitor.GenerateHqlQuery(QueryModel >>>>>>> queryModel, VisitorParameters parameters, Boolean root) >>>>>>> at >>>>>>> NHibernate.Linq.NhLinqExpression.Translate(ISessionFactoryImplementor >>>>>>> sessionFactory) >>>>>>> at >>>>>>> NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String >>>>>>> queryIdentifier, IQueryExpression queryExpression, String >>>>>>> collectionRole, >>>>>>> Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor >>>>>>> factory) >>>>>>> at >>>>>>> NHibernate.Engine.Query.HQLExpressionQueryPlan.CreateTranslators(String >>>>>>> expressionStr, IQueryExpression queryExpression, String collectionRole, >>>>>>> Boolean shallow, IDictionary`2 enabledFilters, >>>>>>> ISessionFactoryImplementor >>>>>>> factory) >>>>>>> at NHibernate.Engine.Query.HQLExpressionQueryPlan..ctor(String >>>>>>> expressionStr, IQueryExpression queryExpression, String collectionRole, >>>>>>> Boolean shallow, IDictionary`2 enabledFilters, >>>>>>> ISessionFactoryImplementor >>>>>>> factory) >>>>>>> at NHibernate.Engine.Query.HQLExpressionQueryPlan..ctor(String >>>>>>> expressionStr, IQueryExpression queryExpression, Boolean shallow, >>>>>>> IDictionary`2 enabledFilters, ISessionFactoryImplementor factory) >>>>>>> at >>>>>>> NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression >>>>>>> queryExpression, Boolean shallow, IDictionary`2 enabledFilters) >>>>>>> at >>>>>>> NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression >>>>>>> queryExpression, Boolean shallow) >>>>>>> at >>>>>>> NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression >>>>>>> queryExpression) >>>>>>> at NHibernate.Linq.DefaultQueryProvider.PrepareQuery(Expression >>>>>>> expression, ref IQuery query, ref NhLinqExpression nhQuery) >>>>>>> at NHibernate.Linq.DefaultQueryProvider.Execute(Expression >>>>>>> expression) >>>>>>> at NHibernate.Linq.DefaultQueryProvider.Execute(Expression >>>>>>> expression) >>>>>>> at System.Linq.Queryable.Max(IQueryable`1 source, Expression`1 >>>>>>> selector) >>>>>>> at [my code] >>>>>>> >>>>>>> It looks like the Hql Ast generation fails for anything that is not >>>>>>> a native type. >>>>>>> Is there a workaround from the Linq side (generators) or do I have >>>>>>> to patch the core? >>>>>>> >>>>>>> Thanks! >>>>>>> Diego >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "nhibernate-development" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected] >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nhibernate-development" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "nhibernate-development" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>>> >>>>> >>>> >>>> -- >>>> >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "nhibernate-development" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>>> >>>> >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "nhibernate-development" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nhibernate-development" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > > --- > You received this message because you are subscribed to the Google Groups > "nhibernate-development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
