Получить сохраненные (не зафиксированные) объекты с критериями из кэша сеанса в NHibernate - PullRequest
1 голос
/ 29 сентября 2010

Я пытаюсь свести вопрос к чему-то простому.

Я использую nhibernate, чтобы получить список сущностей через критерий вызова. После этого я обновлю некоторые объекты и добавлю одну сущность, которую я сохраняю (session.SaveOrUpdate (entity)). Когда я снова получаю список с критериями, я получаю сущности, которые были изменены (с измененными значениями) в моем списке, но не сущность, которую я добавил. Я прочитал, что критерии не используют наличные деньги сессии, но "всегда приводят к SQL-запросу / обращению к БД". Ну, каким-то образом сущности, которые я изменил, взяты из кэша сеанса (я еще не зафиксировал и ничего не было записано в базу данных), но Критерии не «находят» мою вновь добавленную сущность. Можно ли заставить Критерии получить все сущности из кэша (я знаю, что добавленная сущность существует, потому что я могу проверить ключи в списке статистических сущностей)?

P.s.: Как-то странно, что я могу загрузить список сущностей, ДОБАВИТЬ И СОХРАНИТЬ некоторые, снова получить «весь список» и при этом получить только те, которые были там в первый раз. Мне действительно нужно совершить обязательство, чтобы получить полный список?

P.s.s: я не хочу использовать кэш-память второго уровня, которая бы означала, что я также фиксирую изменения, сделанные в другом сеансе, когда я "фиксирую", верно?

1 Ответ

1 голос
/ 30 сентября 2010

Flush ваши изменения, и вы увидите вновь добавленную сущность в списке. Вам не нужно Commit, но Criteria возвращает результаты запроса SQL, он волшебным образом не проходит через кеши, извлекающие объекты, которые могут быть включены в результаты,

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