Failed to resolve property: User.Full_Name: Harrods.Core.Entities.Teacher

I have this ASP.NET MVC3 code that is running Spring and Fluent NHibernate (NHIB 3.1)

I have this error:

could not resolve property: User.Full_Name of: Harrods.Core.Entities.Teacher

[QueryException: could not resolve property: User.Full_Name of: Harrods.Core.Entities.Teacher]
NHibernate.Persister.Entity.AbstractPropertyMapping.GetColumns(String propertyName) +104
NHibernate.Persister.Entity.AbstractPropertyMapping.ToColumns(String alias, String propertyName) +57
NHibernate.Persister.Entity.BasicEntityPropertyMapping.ToColumns(String alias, String propertyName) +100
NHibernate.Persister.Entity.AbstractEntityPersister.ToColumns(String alias, String propertyName) +53
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumns(ICriteria subcriteria, String propertyName) +184
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumnsUsingProjection(ICriteria subcriteria, String propertyName) +134
NHibernate.Criterion.CriterionUtil.GetColumnNamesUsingPropertyName(ICriteriaQuery criteriaQuery, ICriteria criteria, String propertyName) +45
NHibernate.Criterion.CriterionUtil.GetColumnNames(String propertyName, IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria, IDictionary`2 enabledFilters) +46
NHibernate.Criterion.InsensitiveLikeExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) +101
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary`2 enabledFilters) +298
NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable persister, CriteriaQueryTranslator translator, ISessionFactoryImplementor factory, ICriteria criteria, String rootEntityName, IDictionary`2 enabledFilters) +447
NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary`2 enabledFilters) +175
NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) +412
NHibernate.Impl.CriteriaImpl.List(IList results) +80
NHibernate.Impl.CriteriaImpl.List() +104
NHibernate.Criterion.QueryOver`1.List() +96
NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver<TRoot>.List() +75

This is the code that appears to come from:

return session.QueryOver<Teacher>()
                    .Where(x => x.User.Full_Name.IsInsensitiveLike("%" + Search + "%"))
                    .OrderBy(x => x.Id).Asc
                    .Skip((skip - 1) * take)
                    .Take(take)
                    .List<Teacher>();

The My Teacher class is as follows:

[Serializable]
public class Teacher
{

    public virtual User User { get; set; }
}

And my User class looks something like this:

public class User : BaseEntity<User>
{

    public virtual string Email { get; set; }
    public virtual string Full_Name { get; set; }
}

Not sure what gives the problem. Everything looks good to me. Does anyone have any idea what is wrong? :)

Not sure, but they look somewhat similar, but don't really understand how to solve them:

NHibernate.QueryException with dynamic component The correct way to load objects from the list of identifiers when the identifier is not displayed

EDIT: Tried this, but still gave the same error: -

return session.QueryOver<Teacher>()
                    .JoinQueryOver<User>(u => u.User)
                    .Where(x => x.Full_Name.IsInsensitiveLike("%" + FullNameSearchFilter + "%"))
                    .OrderBy(x => x.Id).Asc
                    .Skip((skip - 1) * take)
                    .Take(take)
                    .List<Teacher>();

Tried an alias ...:

return session.QueryOver<Teacher>()
                    .JoinAlias(() => ML.User, () => U)
                    .Where(() => U.Full_Name.IsInsensitiveLike("%" + FullNameSearchFilter + "%"))
                    .OrderBy(x => x.Id).Asc
                    .Skip((skip - 1) * take)
                    .Take(take)
                    .List<Teacher>();

Nothing works!

2

sql ; NHibernate Profiler. - , . , ?

+5
2

:

User userAlias = null;
var list = session.QueryOver<Teacher>()
                  .JoinQueryOver(x => x.User, () => userAlias, JoinType.LeftOuterJoin)
                  .Where(x => x.FullName.IsInsensitiveLike("%" + "test" + "%"))
                  .OrderBy(x => x.Id).Asc
                  .Skip(1)
                  .Take(2)
                  .List(); //Without MasterLicensee

SQL ( SQL-CE ):

SELECT
    this_.Id as Id2_1_,
    this_.User_id as User2_2_1_,
    useralias1_.Id as Id3_0_,
    useralias1_.Email as Email3_0_,
    useralias1_.FullName as FullName3_0_
FROM
    "Teacher" this_
left outer join
    "User" useralias1_
        on this_.User_id=useralias1_.Id
WHERE
    lower(useralias1_.FullName) like @p0
ORDER BY
    useralias1_.Id asc;
@p0 = '%test%' [Type: String (0)]
+2

All Articles