IStatelessSession вставка объекта со многими к одному - PullRequest
3 голосов
/ 09 июня 2010

У меня есть общее отображение

<class name="NotSyncPrice, Portal.Core" table='Not_sync_price'>
<id name="Id" unsaved-value="0">
  <column name="id" not-null="true"/>
  <generator class="native"/>
</id>
<many-to-one name="City" class="Clients.Core.Domains.City, Clients.Core" column="city_id"
             cascade="none"></many-to-one>
<!--<property name="City">
  <column name="city_id"/>
</property>-->

Я хочу использовать IStatelessSession для пакетной вставки. Но когда я устанавливаю объект city на объект NotSyncPrice и вызываю IStatelessSession, я получаю странное исключение:

NHibernate.Impl.StatelessSessionImpl.get_Timestamp()

Когда его ноль или int все в порядке. Я пытаюсь использовать настоящий && прокси-объект города. Но нет результата. Что не так :( Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

У меня была такая же проблема.

Причиной были сущности, отображение которых содержало элемент <cache>.

Эти объекты в основном использовались в веб-приложении. Кэширование второго уровня было введено для повышения производительности в веб-приложении.

Но автономное приложение администратора выполняло массовую загрузку с теми же объектами, используя сеансы без сохранения состояния и те же объекты. Теперь сеанс без сохранения состояния не работает с кэшируемыми объектами.

Простым решением было явное полное отключение кэша второго уровня в приложении администратора. Это можно сделать программно или с помощью файла конфигурации Hibernate, добавив следующую строку:

<property name="cache.use_second_level_cache">false</property>

Это решило проблему без необходимости удаления элементов <cache> в файлах сопоставления или создания отдельного сопоставления для приложения администратора.

2 голосов
/ 22 октября 2010

Это может быть из-за кэшируемого атрибута.Если вы пометили эту сущность или запрос критериев загрузки для кэширования, то ее нельзя загрузить с помощью сеанса без состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...