Поскольку вы указываете пространство имен в элементе <hibernate-mapping
, вы можете написать:
<class name="Person" table="Person">
....
После того, как вы попробуете это, если это не сработает - я понятия не имею, почему это не работает. Я попробовал пример, который вы привели, и он сработал.
Я видел, как новый синтаксический анализатор выдавал странные ошибки, и вам просто нужно идти методом проб и ошибок, когда это происходит: (.
Редактировать
О методе проб и ошибок: вы можете изменить запрос на "от лица", посмотрите, работает ли он (если он не ... я застрял). Затем добавьте фильтр, сначала попробуйте напрямую p.FirstName = 'x'. Тогда попробуйте с параметром. Вы можете попробовать не добавлять псевдоним.
Также попробуйте использовать последнюю версию NH.
Редактировать 2
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernateTests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" namespace="NHibernateTests">
<class name="User" table="`User`" xmlns="urn:nhibernate-mapping-2.2">
<id name="Id" type="Int32" column="UserId">
<generator class="assigned" />
</id>
<property name="UserName" type="String">
<column name="UserName" not-null="true" />
</property>
<property name="FName" type="String">
<column name="FName" />
</property>
</class></hibernate-mapping>
и запрос:
IList<User> users = session.CreateQuery("select from User p " +
"where p.UserName=:fn").SetString("fn", "u")
.List<User>();
работал как шарм.