Nhibernate 多态hql

Nhibernate 多态hql,nhibernate,hql,Nhibernate,Hql,我有一个基本类型,其中“business id”对于给定的子类必须是唯一的,但是可能存在具有相同业务id的不同子类 如果有一个基类型具有请求的id,但属于错误的子类,我希望使用命名查询返回null。下面的代码可以做到这一点,但我想知道是否可以使用更好的HQL避免try/catch。我可以吗 干杯, 贝里尔 当前hql 当前提取代码 public ActivitySubject FindByBusinessId(字符串businessId),其中T:ActivitySubject { 勾选.R

我有一个基本类型,其中“business id”对于给定的子类必须是唯一的,但是可能存在具有相同业务id的不同子类

如果有一个基类型具有请求的id,但属于错误的子类,我希望使用命名查询返回null。下面的代码可以做到这一点,但我想知道是否可以使用更好的HQL避免try/catch。我可以吗

干杯,
贝里尔

当前hql

当前提取代码
public ActivitySubject FindByBusinessId(字符串businessId),其中T:ActivitySubject
{
勾选.RequireStringValue(businessId,“businessId”);
试一试{
return _session.GetNamedQuery(“FindActivitySubjectByBusinessId”)
.SetString(“businessId”,businessId)
.UniqueResult();
}
捕获(无效卡斯特例外e){
//找到具有请求的id但类型错误的活动主题
返回null;
}
}

<query name="FindActivitySubjectByBusinessId">
<![CDATA[
          from ActivitySubject act 
          where act.BusinessId = :businessId 
]]>

</query>
    public ActivitySubject FindByBusinessId<T>(string businessId) where T : ActivitySubject
    {
        Check.RequireStringValue(businessId, "businessId");
        try {
            return _session.GetNamedQuery("FindActivitySubjectByBusinessId")
                .SetString("businessId", businessId)
                .UniqueResult<T>();
        }
        catch (InvalidCastException e) {
            // an Activity Subject was found with the requested id but the wrong type
            return null;
        }
    }