Query should work with NH master branch.
2013/5/31 Alexander I. Zaytsev <[email protected]> > I see.... > > Linq inserts cast here. > > > 2013/5/31 Diego Mijelshon <[email protected]> > >> Yes. See test fixture at >> https://github.com/diegose/NHibernate.Diegose/blob/master/NodaTime/Test/LocalDateFixture.cs >> >> >> On Thu, May 30, 2013 at 9:02 AM, Alexander I. Zaytsev >> <[email protected]>wrote: >> >>> 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. >>> >>> >>> >> >> -- >> >> --- >> 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.
