如何了解HQL NHibernate中的类和映射类
本文关键字:映射 NHibernate HQL 何了解 了解 | 更新日期: 2023-09-27 18:12:44
我的想法是,我想知道实体和映射类从HQL查询。例如,如果我有。cs表示实体UserMap.cs for Mapping User.cs
where I query with HQL like this>
var hql = session.CreateQuery("FROM User");
我怎么知道这个查询运行针对User.cs和UserMap.cs映射。这是因为我想阻止用户查询某些实体。
在深入研究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;
}