1

以下は私が使用しているコードです。私にはかなり単純なようです。しかし、最後の行であるreturnステートメントでNullReferenceExceptionが発生します。スタックトレースは次のとおりです。

FailedSystem.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。NHibernate.Criterion.Junction.ToSqlString(ICriteria基準、ICriteriaQuery基準クエリ、IDictionary 2 2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionaryenabledFilters)でNHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadableパーシスター、CriteriaQueryTranslatorトランスレーター、ISessionFactoryImplementorファクトリー、CriteriaImpl基準、文字列rootEntity 2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionaryNHibernate.Impl.SessionImpl.List(CriteriaImpl基準、IList結果)でNHibernate.Impl.CriteriaImpl.List(IList結果)で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>;

        }
4

1 に答える 1

1

手がかりはスタックトレースにあります。

SQLステートメントを生成するために基準が評価されるのは、returnステートメントでのみです。

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) 

すべての基準をコメントアウトし、問題の原因となっている基準が見つかるまで、小グループでそれらを再導入します。

ほとんどの場合、存在しない、またはマップされていないプロパティを参照しているか、それをサポートしていない条件にnullを指定しています。

于 2009-09-11T07:19:37.397 に答える