如何从HQL NHibernate中了解类和Mapping类

时间:2014-07-13 04:41:50

标签: c# nhibernate hql

我的想法是我想知道HQL查询中的实体和映射类。 例如,如果我有。 实体的User.cs 用于映射User.cs的UserMap.cs

where I query with HQL like this>
var hql = session.CreateQuery("FROM User");

我怎么知道此查询针对User.cs和UserMap.cs映射运行。 这是因为我想阻止用户查询某些实体。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

在深入了解NHibernate源代码后自己解决并得到了想法,但想知道为什么没有其他人像我之前那样有同样的问题。

    [Test]
    public void Test()
    {

        var plan = CreateQueryPlan("FROM User u JOIN u.Country c", false);
        //Check(plan.ReturnMetadata, false, true);
        foreach(var type in plan.ReturnMetadata.ReturnTypes)
        {
            Log.DebugFormat("name: {0}", type.Name);
        }
    }

    public IQueryPlan CreateQueryPlan(string hql, bool scalar)
    {
        var sessionFactory = (ISessionFactoryImplementor)SessionFactory.GetNHSessionFactory();
        var plan = sessionFactory.QueryPlanCache.GetHQLQueryPlan(hql, false,
              new CollectionHelper.EmptyMapClass<string, IFilter>());
        return plan;
    }