我的想法是我想知道HQL查询中的实体和映射类。 例如,如果我有。 实体的User.cs 用于映射User.cs的UserMap.cs
where I query with HQL like this>
var hql = session.CreateQuery("FROM User");
我怎么知道此查询针对User.cs和UserMap.cs映射运行。 这是因为我想阻止用户查询某些实体。
非常感谢你。
答案 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;
}