问题描述:

I have a basic console application in which i using NHibernate V2.x to learn it. It is configured with FluentHibernate. I am facing a strange exception when executing the hql query to get all the users from user table. I know that user is reserved keyword,

so i tried SELECT * FROM [User] and it worked good with CreateSqlQuery method but then below failed miserably with the exception

Method 'HasAncestor' in type 'NHibernate.Hql.Ast.ANTLR.Tree.ASTNode' from assembly 'NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' does not have an implementation.

which is also referred here. Below is all that i have in my console application, could you point out what is wrong

 ISessionFactory factory = CreateSessionFactory();

//read using HQL the 500 users

using (ISession dbSession = factory.OpenSession())

{

var users = dbSession.CreateQuery("from user").List();

}

Dropbox Link to Solution ( Source + Database + Configuration ]

https://dl.dropboxusercontent.com/u/29815170/HQL.zip

note: Please do change your database connections inside the code

网友答案:

I would almost for sure say, that this is the lower/upper case issue. The HQL parser (the ANTLR engine) results in case sensitive statements. Because, in C# we use Pascal style for Class names, I would say that your class is User.

HQL is working on top of Entity/C# model. So this should/must be working:

var users = dbSession.CreateQuery("from User").List(); // U is in capital
相关阅读:
Top