0
"ビジネスID"が特定のサブクラスで一意でなければならないベースタイプがありますが、同じビジネスIDを持つ異なるサブクラスがある可能性があります。polymorphic hql
要求されたIDを持つが、間違ったサブクラスの基本型がある場合は、名前付きクエリを使用してnullを返すことにします。以下のコードはこれを行いますが、より良いHQLでtry/catchを回避できるかどうかは疑問です。私はできますか?
乾杯、
Berryl
<query name="FindActivitySubjectByBusinessId">
<![CDATA[
from ActivitySubject act
where act.BusinessId = :businessId
]]>
</query>
電流電流HQLフェッチコード
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;
}
}