Динамическое включение/выключение поля идентификации в nHibernate

Я новичок в NHibernate/Spring, и у меня есть запрос, который требует, чтобы столбец идентификаторов был выключен перед запуском запроса и включен после этого. По сути, мы повторно вставляем запись в таблицу из таблицы журнала, и нам нужно сохранить тот же идентификатор.

Когда я пытаюсь сделать «SET IDENTITY_INSERT primarykeyfield OFF», Hibernate говорит, что не может выполнить, потому что сначала ожидает SELECT или INSERT.

Есть идеи?


person osij2is    schedule 16.03.2011    source источник


Ответы (1)


Вы пытаетесь выполнить команду SQL как HQL.

Используйте CreateSQLQuery вместо CreateQuery.

person Diego Mijelshon    schedule 16.03.2011
comment
Должен ли я сначала выполнить CreateSQLQuery (SET IDENTITY OFF), а затем создать другой запрос (используя CreateQuery) для перемещения записей и выполнения? Затем выполните другую инструкцию (SET IDENTITY ON), используя CreateSQLQuery? - person osij2is; 16.03.2011
comment
@osij2is: Да. Но если ваша сущность использует генератор удостоверений, вы не сможете вставить конкретное значение с помощью HQL. Возможно, вам придется использовать SQL и для этого. - person Diego Mijelshon; 16.03.2011
comment
В нашей таблице используется собственный генератор удостоверений. Просто невозможно отключить/включить свойство удостоверения для этого идентификатора? - person osij2is; 16.03.2011