Pergunta

A seguir está o código que estou usando. Parece muito simples para mim. Mas eu recebo um NullReferenceException na última linha, a instrução de retorno. Aqui está o rastreamento de pilha:

FailedSystem.NullReferenceException: Objecto de referência não definida para uma instância de um objecto. em NHibernate.Criterion.Junction.ToSqlString (ICriteria critérios, ICriteriaQuery criteriaQuery, IDictionary2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary2 enabledFilters) a NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor (IOuterJoinLoadable persister, CriteriaQueryTranslator tradutor, ISessionFactoryImplementor fábrica, critérios CriteriaImpl, String rootEntityName, IDictionary2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary2 enabledFilters) a NHibernate.Impl.SessionImpl.List (CriteriaImpl critérios, os resultados IList) a NHibernate.Impl.CriteriaImpl.List (IList resultados) a NHibernate.Impl.CriteriaImpl.List ()

 public List<Person> Search(string keyword)
        {
            ICriteria criteria = session.CreateCriteria(typeof (Person));
            Disjunction disjunction = Restrictions.Disjunction();
            {
            // In here, there is a whole lot of business logic adding around 20 conditions     to the disjunction

            }

            criteria.Add(disjunction);
            return criteria.List<Person>() as List<Person>;

        }
Foi útil?

Solução

A pista está no seu rastreamento de pilha.

É apenas a sua declaração de retorno que os critérios é avaliado para produzir uma instrução SQL.

FailedSystem.NullReferenceException: 
Object reference not set to an instance of an object.
at NHibernate.Criterion.Junction.ToSqlString(
    ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary2 enabledFilters) 
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(
    IDictionary2 enabledFilters) 

Comente a todos os seus critérios e reintroduzi-los em pequenos grupos até encontrar aquele que está causando o problema.

O mais provável é que você está referenciando uma propriedade que existem does't, ou não está mapeada, ou o fornecimento de um nulo com um critério que não apoiá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top