NHibernate пытается вставить, когда я делаю выбор - PullRequest
0 голосов
/ 01 февраля 2012

Я использую NHibernate 3.2

Я нахожусь на транзакции, сохраняю некоторые вещи, и перед фиксацией я пытаюсь запросить некоторые элементы, что выдает мне ошибку вставки оракула. ​​

Мой запрос (HQL):

MySession = SessionFactory.OpenSession().BeginTransaction();
/*Do some saves but don't commit*/
var hql = @"select distinct c
from Car c inner join c.Manufacturer manuf where manuf.Id = 449" 
MySession.CreateQuery(hql).List<Car>(); /*throws error*/

Когда я выполняю этот запрос, он выдает мне следующую ошибку

 ORA-01400: cannot insert NULL  ...

Мои сопоставления создаются с помощью:

 lazy="true" dynamic-update="true" dynamic-insert="true" 

Заводской код сессии:

 private static ISessionFactory _sessionFactory;

        private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    var configuration = new Configuration();
                    configuration.Configure();
                    configuration.AddAssembly(typeof(EstoqueEquipamento).Assembly);
                    _sessionFactory = configuration.BuildSessionFactory();
                }
                return _sessionFactory;
            }
        }

        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();
        }

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

поведение по умолчанию для NHibernate (FlashMode auto) заключается в выполнении сброса при выполнении выбора - это не включает ISqlQueries. Таким образом, в тот момент, когда вы выполняете запрос hql, происходит сброс, фактически сброс происходит перед выполнением запроса hql.

Это, вероятно, не имеет отношения к ошибке, которая говорит только о том, что один из объектов, которые он пытается сохранить, имеет значение NULL в свойстве, и БД жалуется.

Я должен отметить, что вы, вероятно, должны сопоставить ограничения БД с вашими отображениями

0 голосов
/ 02 февраля 2012

Раньше у меня были проблемы из-за непоследовательных отображений, в частности, у меня было свойство, не равное null-параметру, сопоставленное с полем базы данных, допускающим нулевое значение. Поэтому, когда я получил связанную сущность, для свойства было назначено значение по умолчанию, что заставило nhibernate думать, что сущность была грязной, поэтому она неожиданно сохраняла ее. Может ли это быть что-то похожее?

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