属性公式不返回结果

时间:2011-01-31 01:42:51

标签: nhibernate

我有一个表Submission,它与SubmissionType有多对一的映射,它有一对多映射到SubmissionTypeYear表。尽管这是一对多映射,但SubmissionType总是只有一个SubmissionTypeYear。 (不要问我为什么数据库的设计是这样的。我没有参与,我只需要让它工作。)

因此,提交将使SubmissionType具有SubmissionTypeYear。

我的问题是在我的Submission.hbm.xml中,我想要一个计算属性,它从SubmissionTypeYear获取一个列值。但我不知道什么是错的,当我知道表中有值时,它会返回零。

这是我的代码:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Business.Domain" assembly="Business.Domain">
  <class name="Business.Domain.Submission, Business.Domain" table="dbo.Submission" lazy="true" optimistic-lock="version"  >
    <id name="Id" column="SubmissionId">
      <generator class="identity"/>
    </id>
    <discriminator column ="SubmissionTypeCode"></discriminator>

    <many-to-one name="SubmissionTypeMember"  insert="false" column="SubmissionTypeCode"    class="RefSubmissionType" access ="field.camelcase-underscore" cascade ="none" />

    <property name="Year" formula="(SELECT TOP 1 SubmissionTypeYear.Year FROM SubmissionTypeYear WHERE  SubmissionTypeYear.SubmissionTypeCode =  SubmissionTypeCode)" access="field.camelcase-underscore"></property>


</hibernate-mapping>

我认为它没有正确地获取SubmissionTypeCode,所以我尝试使用静态字符串,但似乎没有工作。

我做错了什么?请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

好的,我明白了。问题在于创建了新的Submission类型。由于它是一个新对象,尚未存储在数据库中,因此无法获取计算字段。它适用于所有现有对象。修正:)

希望这有助于其他人。