NullReferenceException construting Criteria query
Description
Environment
Attachments
Activity

Tuna Toksoz September 26, 2008 at 1:22 PM

Tuna Toksoz September 26, 2008 at 12:32 PM
DetachedCriteria detached = DetachedCriteria.For(typeof(Person))
.Add(Property.ForName("Name").Eq("John")).SetProjection(Projections.Id());
ICriteria criteria = session.CreateCriteria(typeof(Document))
.Add(Restrictions.Or(
Property.ForName("Title").Eq("Spec"),
Property.ForName("Person.Id").Eq(detached)
));
IList<Document> results = criteria.List<Document>();
Not very oo-ish but it works.

Jon Palmer September 26, 2008 at 12:28 PM
"Please consider using Id's when refering entity, it will solve your problem "
Could you provide an example of what you mean by that?

Tuna Toksoz September 26, 2008 at 12:25 PM
We now have better exception for that test case: NHibernate.QueryException: Cannot use subqueries on a criteria without a projection.
Please consider using Id's when refering entity, it will solve your problem

Jon Palmer September 23, 2008 at 11:25 AM
See attached failing test case. Stack trace of the error is:
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.get_ProjectedTypes() in C:\dev\Nhibernate2.0\src\NHibernate\Loader\Criteria\CriteriaQueryTranslator.cs:line 409
at NHibernate.Criterion.SubqueryExpression.InitializeInnerQueryAndParameters(ICriteriaQuery criteriaQuery) in C:\dev\Nhibernate2.0\src\NHibernate\Criterion\SubqueryExpression.cs:line 112
at NHibernate.Criterion.SubqueryExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) in C:\dev\Nhibernate2.0\src\NHibernate\Criterion\SubqueryExpression.cs:line 40
at NHibernate.Criterion.LogicalExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) in C:\dev\Nhibernate2.0\src\NHibernate\Criterion\LogicalExpression.cs:line 72
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary`2 enabledFilters) in C:\dev\Nhibernate2.0\src\NHibernate\Loader\Criteria\CriteriaQueryTranslator.cs:line 434
at NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable persister, CriteriaQueryTranslator translator, ISessionFactoryImplementor factory, CriteriaImpl criteria, String rootEntityName, IDictionary`2 enabledFilters) in C:\dev\Nhibernate2.0\src\NHibernate\Loader\Criteria\CriteriaJoinWalker.cs:line 54
at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary`2 enabledFilters) in C:\dev\Nhibernate2.0\src\NHibernate\Loader\Criteria\CriteriaLoader.cs:line 47
at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) in C:\dev\Nhibernate2.0\src\NHibernate\Impl\SessionImpl.cs:line 1568
at NHibernate.Impl.CriteriaImpl.List(IList results) in C:\dev\Nhibernate2.0\src\NHibernate\Impl\CriteriaImpl.cs:line 455
at NHibernate.Impl.CriteriaImpl.List[T]() in C:\dev\Nhibernate2.0\src\NHibernate\Impl\CriteriaImpl.cs:line 466
at NHibernate.Test.NHSpecificTest.NH9999.NHJSPFixture.Bug() in C:\dev\Nhibernate2.0\src\NHibernate.Test\NHSpecificTest\NH9999\NHJSPFixture.cs:line 30
Details
Details
Assignee

Reporter

Fixed in rev. 3783 in 2.0.x branch and 3782 in trunk