2012-08-15 1 views
1

사용자 지정 데이터를 반환하는 명명 된 nHibernate 쿼리가 있습니다. 그래서 나는 데이터를 캡슐화하기 위해 빈 클래스를 만들기로 결정했다.nHibernate 명명 된 쿼리, 결과 변환 및 공백이있는 열 이름

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 : [사용자 지정 열]

도움, 누구?

답변

1

좋아, 문제는 직접 발견되었습니다. 필자는 테이블 이름에 대해`공백을 포함하는 열 이름을 이스케이프해야한다고 생각했습니다. 하지만 분명히해서는 안됩니다.

이 구문은 문제가 없습니다.

<property column="Custom column" name="CustomColumn" />