#nhibernate #nhibernate-mapping #hql
#nhibernate #nhibernate-сопоставление #hql
Вопрос:
У меня есть объект со свойством, имя столбца которого содержит вопросительный знак. Как мне сопоставить имя столбца, чтобы запрос HQL корректно генерировал SQL с соответствующим образом завернутым именем столбца (т. Е. [] для SQL Server) вместо замены вопросительного знака параметром? Я пытался заключить имя столбца в обратные знаки или квадратные скобки, но это не работает.
Ответ №1:
У меня обратные ссылки работают нормально. Не забывайте использовать их только в файле сопоставления, а не в HQL:
<property name="Data1" column="`Data1?`" />
Этот запрос:
session.CreateQuery("select Data1 from Foo").List();
Приводит к этому SQL:
select foo0_.[Data1?] as col_0_0_
from Foo foo0_
Обновление: это ошибка в NHibernate 3.1. Возникла проблема с Jira
Комментарии:
1. Похоже, у меня это не работает. У меня есть это сопоставление:
<subclass name="Visit"> <property name="IsFixed" column="`Fixed?`" /> </subclass>
Когда я запускаю этот запрос:return _session.CreateQuery("select visit from Visit visit").List<Visit>();
я получаю этот SQL:select visit0_.[Fixed@p0] as Fixed14_22_ from dbo.tblVisits visit0_
Что приводит к SQLException Недопустимому имени столбца ‘Fixed @p0’.2. @MartinIngham: какую версию NH вы используете? Диалект и драйвер?
3. Версия NH = 3.1.0.4000, диалект = NHibernate. Диалект. MsSql2005Dialect, driver = NHibernate. Драйвер.SqlClientDriver Сервер базы данных = MS SQL Server 2008 R2, поставщик = System.Data.SqlClient
4. @MartinIngham: вы обнаружили ошибку. Я обнаружил проблему в NH tracker (см. Редактирование)