0
 string hql = "from Customer as c left outer join fetch c.Orders" 
 + "where c.CustomerId=:id";

 using(Session)
 {
    return  Session.CreateQuery(hql).SetInt32("id",id).List<Customer>();
 }

当我执行代码时,会出现这样的异常:

EagerLoadCustomerCustomerFetchTest : NHibernate.Hql.st.ANTLRThroughFetchTest : 在QueryId 中的一个失败类型为“Antlr.Runtime.MismatchedTokenException”的异常。 NHibernate.ThrowHQueryException() 中的 NHibernate.ThrowQueryException() 56 列附近。 Ast.ANTLR.HqlParseEngine.Parse() 在 NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String queryString, String collectionRole, Boolean shallow, IDictionary 2 filters, ISessionFactoryImplementor factory) 在 NHibernate.Engine.Query.HQLStringQueryPlan.CreateTranslators(String hql, String collectionRole, Boolean shallow, IDictionary2 enabledFilters, ISessionFactoryImplementor factory) 在 NHibernate.Engine.Query.HQLStringQueryPlan..ctor( String hql, String collectionRole, Boolean shallow, IDictionary2 enabledFilters, ISessionFactoryImplementor factory) 在 NHibernate.Engine.Query.HQLStringQueryPlan..ctor(String hql, Boolean shallow, IDictionary2 enabledFilters, ISessionFactoryImplementor factory) 在 NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(String queryString, Boolean shallow, IDictionary`2 enabledFilters) 在 NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(String query, Boolean shallow) 在 NHibernate.Impl.AbstractSessionImpl。 CreateQuery(String queryString) 在 Data.NhibernateSample.EagerLoadCustomerByIdThroughFetch(Int32 id) 位置 DelayLoadTest.cs: line 80 在 NhibernateDataAcessTest.NhibernateSampleFixture.EagerLoadCustomerByIdThroughFetchTest() 位置 LazyLoad.cs: line 73

我的代码有什么问题,谢谢

4

1 回答 1

0

您的 SQL 格式错误,“...c.Orders”+“where...”之间没有空格。

于 2013-05-20T06:31:56.157 回答