2011-01-31 5 views
0

У меня есть таблица Представление, которое имеет много к одному сопоставление с SubmissionType, который имеет от одного до многих отображение в SubmissionTypeYear table. Несмотря на то, что это сопоставление «один ко многим», всегда будет только один SubmissionTypeYear для SubmissionType. (Не спрашивайте меня, почему база данных была спроектирована таким образом. Я не участвовал, и мне просто нужно заставить ее работать.)формула свойства, не возвращающая результат

Следовательно, у представления будет 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

ОК, я понял. Проблема заключалась в создании новых типов Предложений. Поскольку это был новый объект и еще не был сохранен в базе данных, он не смог получить расчетное поле. Он работал для всех существующих объектов. Исправлено:

Надеюсь, это поможет кому-то еще.

Смежные вопросы