NHibernate で名前付きクエリを実行すると、いくつかの問題が発生します。戻り値として設定しているクラスは、抽象ではなくOrganizationであり、 FullOrganizationという 2 番目のクラス (このクラスから継承) があります。具体的なクラススキーマごとにテーブルがあり、他のすべては正常に機能していますが、名前付きクエリを実行すると例外が発生し続けます(ところで、詳細は提供されません)。
マッピングは次のようになります。
<hibernate-mapping
xmlns="urn:nhibernate-mapping-2.2"
namespace="XXX"
assembly="XXX"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:nhibernate-mapping-2.2 ..\nhibernate-mapping.xsd" auto-import="false">
<class name="Organization" table="Organizations" lazy="false">
<id name="Identity" column="Id">
<generator class="identity"/>
</id>
<property name="Name" column="Name" />
<many-to-one name="OrganizationType" column="OrganizationTypeId"/>
...
<joined-subclass name="FullOrganization" table="FullOrganizations" lazy="false">
<key column="OrganizationId"/>
...
</joined-subclass>
</class>
名前付きクエリは次のようになります。
<sql-query name="OrganizationSearch" read-only="true" cacheable="false">
<return class="Organization" />
<![CDATA[
SELECT *
FROM Organizations o
INNER JOIN OrganizationTypes ot ON o.OrganizationTypeId = ot.Id
LEFT JOIN FullOrganizations fo ON o.Id = fo.OrganizationId
WHERE
// Several Filters Here
]]>
クエリ結果をどのようにマッピングすればよいですか? 返されるオブジェクトは Organization または FullOrganization のインスタンスである可能性があることを考慮してください。