获取NHibernate错误类型为';的异常;Antlr.Runtime.NoViableAltException
本文关键字:异常 Runtime NoViableAltException Antlr 错误 NHibernate 类型 获取 | 更新日期: 2023-09-27 18:20:20
我在查询一个名为的表时遇到了一些问题
如果我写一个sql查询,它可以很好地工作,即SELECT*FROM[产品组],但当使用NHibernate CreateQuery时,一切都会破坏
using (ISession session = SessionFactory.OpenSession())
{
IQuery query = session.CreateQuery("FROM [product groups]");
IList<ProductGroups> results = query.List<ProductGroups>();
}
将生成错误
引发了类型为"Antlr.Runtime.NoViableAltException"的异常。第1行第5列附近
位于的NHibernate.Hql.Ast.ANTLR.ErrorCounter.SthrowQueryException()NHibernate.Hql.Ast.ANTLR.HqlParseEngine.Parse()
…
如果我使用CreateSQLQuery,它可以工作
ISQLQuery query = session.CreateSQLQuery("SELECT ID, Title, [Available as develop] FROM [product groups]").AddEntity(typeof(ProductGroups));
IList<ProductGroups> results = query.List<ProductGroups>();
映射文件看起来像这个
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="ListModels.ProductGroups, ListModels" lazy="true" table="Product groups">
<id name="ID">
<generator class="native" />
</id>
<property name="Title" />
<property name="AvailableAsDevelopmentLicense" column="Available as develop" />
</class>
</hibernate-mapping>
为什么CreateQuery不起作用?
此处描述的CreateQuery()
:9.3.2。IQuery接口是如何用14查询实体的方法。HQL:休眠查询语言。
即,您必须使用域模型名称ProductGroups
,而不是表名称[product groups]
//IQuery query = session.CreateQuery("FROM [product groups]");
IQuery query = session.CreateQuery("FROM ListModels.ProductGroups as pg");