我有一个表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,所以我尝试使用静态字符串,但似乎没有工作。
我做错了什么?请帮忙。
由于
答案 0 :(得分:0)
好的,我明白了。问题在于创建了新的Submission类型。由于它是一个新对象,尚未存储在数据库中,因此无法获取计算字段。它适用于所有现有对象。修正:)
希望这有助于其他人。