У меня есть базовый тип, где «бизнес-идентификатор» должен быть уникальным для данного подкласса, но возможно наличие разных подклассов с одним и тем же бизнес-идентификатором.
Если есть базовый тип с запрошенным идентификатором, но с неправильным подклассом, я хочу вернуть ноль, используя именованный запрос. Код ниже делает это, но мне интересно, смогу ли я избежать try / catch с лучшим HQL. Можно я?
Приветствия
Berryl
текущий hql
<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;
}
}