2011-02-15 2 views
1

보고서를 만드는 데 사용하는 저장 프로 시저가 있습니다 (각 SP는 데이터를 요일/주/월/년으로 그룹화합니다). 예를 들어 SP의 필드와 일치하는 간단한 엔티티 "보고서"를 만들었지 만 ID (또는 복합 ID)가 필요하다는 오류가 발생합니다.생성 된 데이터에 대한 ID 속성 - NHibernate

생성 된 데이터 집합의 ID를 정의하고 실제 테이블에 매핑하지 않는 방법은 무엇입니까?

내가 가진 매핑 파일은 다음과 같습니다

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="Report, Business" mutable="false" check="none"> 
     <property name="Year" type="int" /> 
     <property name="Week" type="int" /> 
     <property name="Date" type="DateTime" /> 
     <property name="Count" type="int" /> 
    </class> 
    <sql-query name="spReport"> 
     <return class="Report, Business" lock-mode="read"> 
      <return-property column="Year" name="Year" /> 
      <return-property column="Week" name="Week" /> 
      <return-property column="Date" name="Date" /> 
      <return-property column="Count" name="Count" /> 
     </return> 
     exec spReport :StartDate, :EndDate 
    </sql-query>  
</hibernate-mapping> 

어떤 도움이 크게 감사합니다.

감사합니다.

답변

2
<class name="Report, Business" mutable="false" check="none"> 
    <composite-id> 
    <key-property name="Year" type="int" /> 
    <key-property name="Week" type="int" /> 
    <key-property name="Date" type="DateTime" /> 
    <key-property name="Count" type="int" /> 
    </composite-id> 
</class> 

당신은 ReportEqualsGetHashCode를 재정의해야합니다.

개인적으로 나는이 접근법을 좋아하지 않습니다. 클래스를 전혀 매핑하지 않고 쿼리에 SetTransformer(Transformers.AliasToBean<Report>())을 사용하는 것이 좋습니다.

+0

감사합니다. 귀하의 조언을 듣고 SetTransformer (Transformers.AliasToBean ()) 옵션을 선택했습니다. – jose

관련 문제