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.


Reply via email to