2

nHibernateを使用して、次のコードを実行しようとしています。

string hql = "select a from Applicant a with (nolock) where a.Inbound_Results_Id = :InboundResultsId";


    try
    {
        IList<Applicant> applicants = _ws.Session.CreateQuery(hql)
                    .SetParameter("InboundResultsId", indata.Inbound_Results_Id)
                    .List<Applicant>();
    }
    catch (NullReferenceException)
    {
        Logger.LogMsg("No applicant data was found when looking for unmatched applicants.");
    }

そして、私は次の例外を受け取ります:

名前付きパラメーター[InboundResultsId]が見つかりませんでした

このエラーが発生する理由について何か考えはありますか?

ありがとう!ノミ

4

1 に答える 1

0

愚かな間違い。Inbound_Results_Idは、私の Applicant クラスのプロパティではないことがわかりました。私のApplicantクラスには、InboundResultと呼ばれる複合オブジェクトのプロパティがあり、これにはInbound_Results_Idと呼ばれるプロパティがあります。だから私がする必要があったのは、私のHQLのためにこれだけでした:

   string hql = "select a from Applicant a where a.Inbound_Result.Inbound_Results_Id = :inboundResult and a.Harvest_Result_Processed = 0 and a.Applicant_Id not in (" + applicantIdList + ") and a.Status in ('Generated','Received')";

完全なコードは次のとおりです。

string hql = "select a from Applicant a where a.Inbound_Result.Inbound_Results_Id = :inboundResult and a.Harvest_Result_Processed = 0 and a.Applicant_Id not in (" + applicantIdList + ") and a.Status in ('Generated','Received')";

IList<Applicant> unmatchedApplicants = new List<Applicant>();

try
{
    unmatchedApplicants = _ws.Session.CreateQuery(hql)
        .SetParameter("inboundResult", indata.Inbound_Results_Id.ToString())
        .List<Applicant>();
}
catch (NullReferenceException)
{
    Logger.LogMsg("No applicant data was found when looking for unmatched applicants.");
}

ここに私の申請者クラスがあります:

    public class Applicant : Person
    {

        public virtual long? Applicant_Id { get; protected set; }
        public virtual string Status { get; set; }
        public virtual Account App_Account { get; set; }
        public virtual string Carrier_Name { get; set; }

        public virtual InboundResult Inbound_Result { get; set; }

        //Applicant Demographics
        public virtual string Middle_Name { get; set; }
        public virtual string Gender { get; set; }
        public virtual DateTime? DOB { get; set; }

}

ここに私の InboundResult クラスがあります:

public class InboundResult
{

    public virtual long? Inbound_Results_Id { get; protected set; }
    public virtual string File_Name { get; set; }
    public virtual string Status { get; set; }
    public virtual string Header_Line { get; set; }
    public virtual string Contents { get; set; }
    public virtual string Support_Notes { get; set; }
    public virtual DateTime Create_DateTime { get; set; }
    public virtual DateTime Update_DateTime { get; set; }
    public virtual string User_Name { get; set; }
}
于 2013-03-15T21:40:25.720 に答える