2011-02-15 73 views
1

我有一些存儲過程用於創建報告(每個SP將數據分組爲日/周/月/年)。舉例來說,我創建了一個簡單的實體「Report」,它與SP的字段相匹配,但是拋出一個錯誤,指出需要一個ID(或Composite 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> 

你必須重寫EqualsGetHashCodeReport

就我個人而言,我不喜歡這種方法。最好不要映射類,並在查詢上使用SetTransformer(Transformers.AliasToBean<Report>())

+0

謝謝。我接受了你的建議,並去了SetTransformer(變形金剛.AliasToBean ())選項。 – jose 2011-02-16 00:20:21