2011-02-15 71 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