1

カスタムデータを返す名前付きのnHibernateクエリがあります。そこで、データをカプセル化するためのBeanクラスを作成することにしました。ここにいくつかのコードがあります:

public IList<Report> GetReport(int reportId)
{
   return Session.GetNamedQuery("GetReport")
                 .SetParameter("Id", reportId)
                 .List<Report>();
}


public class Report
{
   public virtual string Id { get; set; }
   ...
   public virtual string CustomColumn { get; set; }
} 

およびマッピング:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" 
namespace="MyAssembly.Model">
    <class name="Report" table="Report">
        <id name="Id" column="Id">
            <generator class="assigned"/>
        </id>
                ...
        <property column="`Custom column`" name="CustomColumn" />
    </class>

    <sql-query name="GetReport">
       <return class="Report"/>
       <query-param name="Id" type="int" />
       exec GetReport :Id
    </sql-query>
</hibernate-mapping>

しかし、このメソッドを呼び出すと、例外が発生しました。

NHibernate.Exceptions.GenericADOException:クエリを実行できませんでした----> System.IndexOutOfRangeException:[カスタム列]

助けて、誰か?

4

1 に答える 1

1

わかりました、私は自分で問題を見つけました。テーブル名の場合と同じように、スペースを含む列名を`でエスケープする必要があると思いました。しかし、どうやら私はすべきではありません。

この構文は問題ありません。

<property column="Custom column" name="CustomColumn" />
于 2012-08-16T11:34:13.340 に答える