別のマッピングで参照したいマップ ビューがあります。
マッピングされたビュー:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Model.TagBE, Model" table="vw_CurrentTag" lazy="true" schema="dbo">
<id name="Id" column="TAG_HISTORY_ID" type="Guid"
unsaved-value="00000000-0000-0000-0000-000000000000">
</id>
<property name="Tag" column="TAG"/>
<property name="TagStatus" column="TAG_STATUS"/>
<property name="Created" column="CREATE_DATE"/>
<many-to-one name="Defect" class="Model.DefectBE, Model" fetch="join"
not-found="ignore" cascade="none" column="DEFECT_ID" />
<many-to-one name="CreatedBy" class="Model.UserBE, Model" lazy="false"
fetch="join" cascade="none" column="CREATE_USER_ID" />
</class>
</hibernate-mapping>
単一の TagBE を取得するために、このマッピングで使用したいと思います。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="DefectBE, Model" lazy="true" table="DEFECT" schema="dbo">
<id name="Id" column="DEFECT_ID" type="Guid">
<generator class="assigned" />
</id>
<property name="Sn" column="SERIAL_NUMBER" />
<property name="Description" column="PART_DESCRIPTION" />
<many-to-one name="System" class="Model.SystemBE, Model" fetch="join"
cascade="none" column="SYSTEM_ID" not-found="ignore"/
</class>
</hibernate-mapping>
上記のマッピングは、例のために削除されています (当面の問題に関係のない一連のプロパティと一対一の関係を削除しました。
「システム」という名前で示されている多対 1 は期待どおりに機能し、ビューではなく別のマップされたテーブルです。私の問題は、ビュー「vw_CurrentTag」をマップしようとすると、特に ISession と ICriteria を使用して特定の TagBE クラスを取得する場合にのみデータにアクセスできることです。
DefectBE マッピングで次を使用しようとすると、TagBE に null が返されます。
<many-to-one name="Tag" class="Model.TagBE, Model" fetch="join" cascade="none"
column="DEFECT_ID" not-found="ignore"/>
1 対 1 の使用も試みましたが、TagBE オブジェクトが DefectBE オブジェクトの一部である場合は常に null になります。
それが不可能な場合は、エントリが 1 つだけのバッグをいつでも使用できます。
ビューは、他の列に基づいて一意のタグ列を返す単一のテーブルに対する単なるクエリです。